js如何使用RSA加密或解密数据?jsencrypt使用指南
发布于 作者:苏南大叔 来源:程序如此灵动~

苏南大叔在本文中描述一款开源代码jsencrypt
,主要功能就是在前端js
中,对敏感数据进行RSA
加密,同一个数据每次加密的结果,并不一致,但是在服务器端都能够解密出唯一数据。当然,这款jsencrypt
也自带前端js
解密功能。

本文测试环境:mac
/chrome
/jsencrypt@3.0.0-rc.1
。从下图可以看到,每次加密的结果都不一样:

下载jsencrypt
这款RSA
加密源码库jsencrypt
,截至到发稿,其最新版本为3.0.0-rc.1
。其github
地址是:
其官方主页是:

下载到的压缩包里面的bin/jsencrypt.min.js
,才是真正需要的用在网页里面的js
引用文件。如果您需要对源码自行编译,请使用gulp
工具进行编译。

处理密钥对
可以参考下面的文字,获得一对密钥:
在接下来的范例代码中,公钥私钥就是一行文本。包含着每个字符,并且没有换行。对于js
代码来说,您可能需要手工删除一下公钥和私钥的每个换行符,合并成一行文本。特别注意的是:
- 要保留开头结尾的注释
- 要保留空格
当然这里也有个苏南大叔写的js
替换换行符号的代码,仅供参考:
使用公钥加密数据(常用)
下面的代码,是使用jsencrypt
对数据进行RSA
公钥加密的基本姿势:

使用私钥解密数据(可能不常见)
下面的代码是使用jsencrypt
对数据进行RSA
私钥解密的基本姿势:
注意:在这里,解密失败是会返回一个false
的,可以作为大家判断是否解密成功的判断依据。
sign
和verify
功能
官方还提供了签名sign
和签名校验verify
的功能,不过苏南大叔暂时也用不到,所以这两个功能暂存。
特别说明
因为对于苏南大叔来说,更多的使用情况是:在前端加密用户输入的数据,然后在后端进行解密。那么jsencrypt
的加密解密功能,苏南大叔其实也就用得到其中的加密功能。
另外,在日常使用过程中,苏南大叔建议您:
- 仅用于加密数字字母等简单字符,而对于中文字符,特别是一些生僻字,会发生解密失败的情况。
- 同其它的加密算法一样,加密完成后,字符串体积会明显增加,所以尽量不要用于加密较长数据。
总结
更多rsa
加密解密的博客文章,请点击苏南大叔的博客链接:


