我是靠谱客的博主 高挑飞机,最近开发中收集的这篇文章主要介绍js使用RSA加密,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

为了防止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加密所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(81)

评论列表共有 0 条评论

立即
投稿
返回
顶部