Javascript Crypto Library for browser
npm install client-crypto
流程:
- 服务端使用非对称加密
RSA
生成公钥私钥,并将公钥发送给客户端。 - 客户端生成对称加密(这里使用
AES
)密钥,使用服务端发送的RSA
公钥加密该密钥,并将其发送给服务端。 - 服务端使用
RSA
私钥解密,得到该密钥。
此时,服务端、客户端同时拥有该密钥,使用AES
加密解密消息体。
import Crypto from 'client-crypto';
Crypto.RSA.encrypt('secretKey', 'publicKey');
import Crypto from 'client-crypto';
Crypto.RSA.encrypt('encryptedKey', 'privateKey');
默认使用gcm
模式。
import Crypto from 'client-crypto';
Crypto.AES.createKey();
使用该方法生成密钥后,会缓存该密钥,使用加密(encrypt)或解密(decrypt)方法时也可不提供密钥。
import Crypto from 'client-crypto';
Crypto.AES.encrypt(data, '密钥');
该方法会先执行JSON.stringify(data),将数据转为json格式的字符串,然后使用AES加密。
import Crypto from 'client-crypto';
Crypto.AES.decrypt('encrypted message', '密钥');
该方法会使用AES解密,再执行JSON.parse,获取数据。
import Crypto from 'client-crypto';
Crypto.AES.getKey();
import Crypto from 'client-crypto';
Crypto.AES.setKey('密钥');
import Crypto from 'client-crypto';
Crypto.AES.clearKey();
import Crypto from 'client-crypto';
Crypto.SHA256('message');