js中使用RSA加解密解决方案总结

js中使用RSA加解密解决方案总结

1.需求背景
  • 最近开发vue项目中,对于用户手机号码需要进行RSA加解密操作。
  • 简介:RSA加密,是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。为提高保密强度,RSA密钥至少为500位长。这就使加密的计算量很大。为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。
  • RSA是被研究得最广泛的公钥算法,从提出到现在已近三十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。1983年麻省理工学院在美国为RSA算法申请了专利。
解决方案
  • 考虑到使用的便捷,这里需要用到jsencrypt插件,使用如下:

  • 
    // 1、安装pinyin-pro(推荐使用淘宝镜像):
    npm install jsencrypt --save
    
    // 2、在项目中引入:
    import JSEncrypt from 'jsencrypt'
    
    // 3、加密(origin:原始text,key:公钥)
    const encryptMI = (origin, key) => {
      const encrypt = new JSEncrypt()
      encrypt.setPublicKey(key)
      return encrypt.encrypt(origin)
    }
    
    // 4、解密(origin:加密text,key:私钥)
    const decryptMI = (cipher, key) => {
      const decrypt = new JSEncrypt()
      decrypt.setPrivateKey(key)
      return decrypt.decrypt(cipher)
    }
    
    
  • 解决。

你可能感兴趣的:(H5,javascript,ecmascript)