linkdood-encrypt
v1.0.3
Published
描述:linkdood-encrypt 配合服务端采取aes与sm4 2套加密方式混合版 ###PS: key与iv 不要使用纯数字,尽量使用英文+常用符号定义 CryptoJS内部定义解析key与iv存在问题
Downloads
4
Readme
linkdood-encrypt 加密库
描述:linkdood-encrypt 配合服务端采取aes与sm4 2套加密方式混合版 ###PS: key与iv 不要使用纯数字,尽量使用英文+常用符号定义 CryptoJS内部定义解析key与iv存在问题
引用方式
1:可以通过script引用方式,详情查看index.html
linkdoodEncrypt[方法]()
####例
var mode = '2';
var key = 'key';
var iv = 'iv';
var encryptData = linkdoodEncrypt.CustomizeEncrypt('nj123456', mode, key, iv);
console.log(encryptData);
var decryptData = linkdoodEncrypt.CustomizeDecrypt(encryptData, mode, key, iv);
console.log(decryptData);
2:可以通过npm下载方式引用
import linkdoodEncrypt, {setConfig, CustomizeEncrypt, CustomizeDecrypt} from 'linkdood-encrypt';
####例
import linkdoodEncrypt from 'linkdood-encrypt';
linkdoodEncrypt.setConfig(1, 'key', 'iv');
const encryptData = linkdoodEncrypt.CustomizeEncrypt('nj123456');
console.log(encryptData);
const decryptData = linkdoodEncrypt.CustomizeDecrypt(encryptData);
console.log(decryptData);
SM3
Cryptographic Hash Algorithm.
import { SM3 } from 'linkdood-encrypt';
console.log(SM3.digest('abc'))
console.log(SM3.digest('YWJj', 'base64'))
console.log(SM3.digest('616263', 'hex', 'base64'))
SM4
Cryptographic Hash Algorithm.
import { SM4 } from 'linkdood-encrypt';
const key = '0123456789abcdeffedcba9876543210' // Any string of 32 hexadecimal digits
const originalData = 'SM4 国标对称加密'
/**
* Block cipher modes:
* - ECB: electronic codebook
* - CBC: cipher block chaining
*/
let encryptedData, decryptedData
// ECB
encryptedData = SM4.encrypt(originalData, key, {
inputEncoding: 'utf8',
outputEncoding: 'base64'
})
decryptedData = SM4.decrypt(encryptedData, key, {
inputEncoding: 'base64',
outputEncoding: 'utf8'
})
// CBC
const iv = '0123456789abcdeffedcba9876543210' // Initialization vector(any string of 32 hexadecimal digits)
encryptedData = SM4.encrypt(originalData, key, {
iv: iv,
mode: SM4.constants.CBC,
inputEncoding: 'utf8',
outputEncoding: 'hex'
})
decryptedData = SM4.decrypt(encryptedData, key, {
iv: iv,
mode: SM4.constants.CBC,
inputEncoding: 'hex',
outputEncoding: 'utf8'
})
AES
AES encryption
import { AES } from 'linkdood-encrypt';
// Normal
const encrypted = AES.encrypt("Message", "Secret Passphrase");
const decrypted = AES.decrypt(encrypted, "Secret Passphrase");
// Custom Key and IV
const key = AES.enc.Hex.parse("000102030405060708090a0b0c0d0e0f");
const iv = AES.enc.Hex.parse("101112131415161718191a1b1c1d1e1f");
const encrypted = AES.encrypt("Message", key, { iv: iv });
// Block Modes and Padding
const encrypted = AES.encrypt("Message", "Secret Passphrase", {
mode: AES.mode.CFB,
padding: AES.pad.AnsiX923
});
MD5
MD5 Enc
import { MD5 } from 'linkdood-encrypt';
console.log(MD5('message'));
提供方法
###CustomizeEncrypt 加密 | 参数 | 是否必填 | 默认值 | 描述 | | ---- | ---- | ---- | ---- | | data | 是 | | 需要机密数据 | | mode | 是\否 | undefined \ config.mode | 加密方式 1:商密 2:国密 | | key | 是\否 | undefined \ config.key | 密钥 | | iv | 是\否 | undefined \ config.iv | 偏移量 |
###CustomizeDecrypt 解密 | 参数 | 是否必填 | 默认值 | 描述 | | ---- | ---- | ---- | ---- | | data | 是 | | 需要机密数据 | | mode | 是\否 | undefined \ config.mode | 加密方式 1:商密 2:国密 | | key | 是\否 | undefined \ config.key | 密钥 | | iv | 是\否 | undefined \ config.iv | 偏移量 |
###setConfig 设置全局参数 | 参数 | 是否必填 | 默认值 | 描述 | | ---- | ---- | ---- | ---- | | mode | 是 | 1 | 加密方式 1:商密 2:国密 | | key | 是 | 空字符串 | 密钥 | | iv | 是 | 空字符串 | 偏移量 |
SM3.digest(data, [inputEncoding], [outputEncoding])
Calculates the digest.
| Param | Type | Default | Description |
| -------------- | --------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| data | string
|ArrayBuffer
|Buffer
| | Data message |
| inputEncoding | string
| "utf8"
| The encoding of the data
string, if data
is not a string then inputEncoding
is ignored. |
| outputEncoding | string
| | If outputEncoding
is provided, a string will be returned, otherwise a ArrayBuffer is returned. |
SM4.encrypt(data, key[, options])
Encrypt data.
| Param | Type | Default | Description |
| ---------------------- | --------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| data | string
|ArrayBuffer
|Buffer
| | Plain message |
| key | string
| | Cipher key(any string of 32 hexadecimal digits) |
| options | object
| | Options |
| options.mode | ECB
| CBC
| ECB
| Block cipher mode |
| options.iv | string
| | Initialization vector(any string of 32 hexadecimal digits) |
| options.inputEncoding | string
| "utf8"
| The encoding of the plain data
string,if data
is not a string then inputEncoding
is ignored. |
| options.outputEncoding | string
| | If outputEncoding
is provided, a string will be returned, otherwise a ArrayBuffer is returned. |
SM4.decrypt(data, key[, options])
Decrypt data.
| Param | Type | Default | Description |
| ---------------------- | --------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| data | string
|ArrayBuffer
|Buffer
| | Ciphered data |
| key | string
| | Cipher key(any string of 32 hexadecimal digits) |
| options | object
| | Options |
| options.mode | ECB
| CBC
| ECB
| Block cipher mode |
| options.iv | string
| | Initialization vector(any string of 32 hexadecimal digits) |
| options.inputEncoding | string
| | The encoding of the plain data
string,if data
is not a string then inputEncoding
is ignored. |
| options.outputEncoding | string
| | If outputEncoding
is provided, a string will be returned, otherwise a ArrayBuffer is returned. |
AES
参看使用示例
MD5
参看使用示例