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) }
-
解决。