概述
为了防止Web页面的敏感信息泄露,我们需要使用RSA加密算法对数据进行加密。
JS中常用的RSA加密库有:jsencrypt,jsrsasign,js-crypto-rsa
jsencrypt库的使用比较简单:
安装库
npm i jsencrypt
使用:
import JSEncrypt from ‘jsencrypt‘
var publicKey = "-----BEGIN PUBLIC KEY-----n" +
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTTt5d1LYtIxiW9ekKFBVonFOTn" +
"XJHv4PY4xCDLPYbHWRKa/mRO7J11OJX+cR7bqzNq6uxH1W339wVn" +
"lLP/x3Rl1RBh4prj0eYOEIsDVTvLTJONKazRtQrZ7yzSZ69o/3CQvn" +
"ex6kb4js+9zho4U9fwIDAQABn" +
"-----END PUBLIC KEY-----";
let jse = new JSEncrypt();
jse.setPublicKey(publicKey);
var str = jse.encrypt(en);
console.log("加密数据:" + str)
注意: jsencrypt 默认使用的PKCS1加密方式
js-crypto-rsa 库使用
- 导入依赖包
import rsa from 'js-crypto-rsa'; // for npm import rsa from 'path/to/js-crypto-rsa/dist/index.js'; // for github
- 生成key
rsa.generateKey(2048).then( (key) => { // now you get the JWK public and private keys const publicKey = key.publicKey; const privateKey = key.privateKey; })
- 签名和验证
const publicJwk = {kty: 'RSA', n: '...', e: '...'}; // public key const privateJwk = {kty: 'RSA', n: '...', e: '...', p: '...', q: '...', dp: '...', dq: '...', qi: '...'}; // paired private key const msg = ...; // Uint8Array // sign rsa.sign( msg, privateJwk, 'SHA-256', { // optional name: 'RSA-PSS', // default. 'RSASSA-PKCS1-v1_5' is also available. saltLength: 64 } ).then( (signature) => { // now you get the signature in Uint8Array return rsa.verify( msg, sign, publicJwk, 'SHA-256', { // optional name: 'RSA-PSS', // default. 'RSASSA-PKCS1-v1_5' is also available. saltLength: 64 // default is the same as hash length } ); }).then( (valid) => { // now you get the result of verification in boolean });
- 加密和解密
const publicJwk = {kty: 'RSA', n: '...', e: '...'}; // public key const privateJwk = {ktyp: 'RSA', n: 'P-256', e: '...', p: '...', q: '...', dp: '...', dq: '...', qi: '...'}; // paired private key const msg = ...; // Uint8Array // sign rsa.encrypt( msg, publicJwk, 'SHA-256', // optional, for OAEP. default is 'SHA-256' { // optional name: 'RSA-PSS', // default. 'RSASSA-PKCS1-v1_5' is also available. // label: new Uint8Array([...]) // optional }).then( (encrypted) => { // now you get an encrypted message in Uint8Array return rsa.decrypt( encrypted, privateJwk, 'SHA-256', // optional, for OAEP. default is 'SHA-256' { // optional name: 'RSA-PSS', // default. 'RSASSA-PKCS1-v1_5' is also available. // label: new Uint8Array([...]) // optional } ); }).then( (decrypted) => { // now you get the decrypted message });
扫码关注微信公众号,更好的交流
最后
以上就是高挑飞机为你收集整理的js使用RSA加密的全部内容,希望文章能够帮你解决js使用RSA加密所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复