Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pecliu/gm-crypt
国密算法JS实现。Implement of Chinese encrypt algorithm in JavaScript.
https://github.com/pecliu/gm-crypt
Last synced: 14 days ago
JSON representation
国密算法JS实现。Implement of Chinese encrypt algorithm in JavaScript.
- Host: GitHub
- URL: https://github.com/pecliu/gm-crypt
- Owner: pecliu
- License: mit
- Created: 2018-11-09T12:18:48.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-06-02T05:43:43.000Z (over 1 year ago)
- Last Synced: 2024-10-05T21:36:30.587Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 7.81 KB
- Stars: 34
- Watchers: 1
- Forks: 12
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gm-crypt-nodejs
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
基于`javascript`和[`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray)的国密加密算法实现。
Implement of Chinese encrypt algorithm in JavaScript and [TypedArray](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray).
为了兼容浏览器环境和node.je环境,这里我们使用了[TextEncoder](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder)和[Base64.js](https://github.com/beatgammit/base64-js)。
Here we use [TextEncoder](https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder) and [Base64.js](https://github.com/beatgammit/base64-js) for both browser and node.js environment.
由于使用了`TextEncoder`,所以暂时不支持`Edge`。Node.js版本最低为8,建议使用最新的LTS版本。
Because of using `TextEncoder`, this code cannot run in `Edge` browser. `Node.js`‘s version should at least be 8, and the newest LTS version is recommended.
## Roadmap
- [x] SM4
- [ ] SM3
- [ ] SM2## Documentation
### Install
```
npm install gm-crypt
```### SM4
#### Init
```js
const SM4 = require('gm-crypt').sm4let sm4Config = {
// encrypt/decypt main key; cannot be omitted
key: 'JeF8U9wHFOMfs2Y8',// optional; can be 'cbc' or 'ecb'
mode: 'cbc', // default// optional; when use cbc mode, it's necessary
iv: 'UISwD9fW6cFh9SNS', // default is null// optional: this is the cipher data's type; Can be 'base64' or 'text'
cipherType: 'base64' // default is base64
}let sm4 = new SM4(sm4Config)
```#### Encrypt
```js
let plaintext = '中国国密加解密算法'
let ciphertext = sm4.encrypt(plaintext)
// ciphertext's result is 'j/+HgSpv8RZQI2YtSq0L1RnemiSokMm1VvLHSTt245U='
```#### Decrypt
```js
let ciphertext = 'j/+HgSpv8RZQI2YtSq0L1RnemiSokMm1VvLHSTt245U='
let plaintext = sm4.decrypt(ciphertext)
// plaintext's result is '中国国密加解密算法'
```## License
[MIT](LICENSE)