npm.io
1.0.3 • Published 2 years ago

linkdood-encrypt

Licence
ISC
Version
1.0.3
Deps
6
Size
259 kB
Vulns
0
Weekly
0

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

参看使用示例