Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pedrouid/iso-crypto
Isomorphic Cryptography Library for AES, HMAC and SHA2
https://github.com/pedrouid/iso-crypto
Last synced: 2 months ago
JSON representation
Isomorphic Cryptography Library for AES, HMAC and SHA2
- Host: GitHub
- URL: https://github.com/pedrouid/iso-crypto
- Owner: pedrouid
- License: mit
- Created: 2020-11-19T18:23:22.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2021-07-15T13:44:26.000Z (over 3 years ago)
- Last Synced: 2024-10-06T06:50:00.511Z (3 months ago)
- Language: TypeScript
- Size: 1000 KB
- Stars: 1
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# iso-crypto [![npm version](https://badge.fury.io/js/%40pedrouid%2Fiso-crypto.svg)](https://badge.fury.io/js/%40pedrouid%2Fiso-crypto)
Isomorphic Cryptography Library for AES, HMAC and SHA2
## Description
This library supports AES, HMAC and SHA2 methods through native NodeJS and Browser APIs when available and fallbacks to vanilla javascript are already provided.
## Usage
### RandomBytes
```typescript
import * as isoCrypto from 'iso-crypto';const length = 32;
const key = isoCrypto.randomBytes(length);// key.length === length
```### AES
```typescript
import * as isoCrypto from 'iso-crypto';
import * as encUtils from 'enc-utils';const key = isoCrypto.randomBytes(32);
const iv = isoCrypto.randomBytes(16);const str = 'test message to encrypt';
const msg = encUtils.utf8ToArray(str);const ciphertext = await isoCrypto.aesCbcEncrypt(iv, key, msg);
const decrypted = await isoCrypto.aesCbcDecrypt(iv, key, ciphertext);
// decrypted === str
```### HMAC
```typescript
import * as isoCrypto from 'iso-crypto';
import * as encUtils from 'enc-utils';const key = isoCrypto.randomBytes(32);
const iv = isoCrypto.randomBytes(16);const macKey = encUtils.concatArrays(iv, key);
const dataToMac = encUtils.concatArrays(iv, key, msg);const mac = await isoCrypto.hmacSha256Sign(macKey, dataToMac);
const result = await isoCrypto.hmacSha256Verify(macKey, dataToMac, mac);
// result will return true if match
```### SHA2
```typescript
import * as isoCrypto from 'iso-crypto';
import * as encUtils from 'enc-utils';// SHA256
const str = 'test message to hash';
const msg = encUtils.utf8ToArray(str);
const hash = await isoCrypto.sha256(str);// SHA512
const str = 'test message to hash';
const msg = encUtils.utf8ToArray(str);
const hash = await isoCrypto.sha512(str);
```## React-Native Support
This library is intended for use in a Browser or NodeJS environment, however it is possible to use in a React-Native environment if NodeJS modules are polyfilled with `react-native-crypto`, read more [here](https://github.com/tradle/react-native-crypto).
## License
[MIT License](LICENSE.md)