jsencrypt.js详解

发布时间:2023-05-20

一、jsencrypt.js版本

jsencrypt.js是一个为Javascript开发者提供RSA加密和解密功能的 Javascript 库。当前的最新版本是 v3.0.0(截至 2021 年 09 月)。 该库基于 JSEncrypt 和 RSA 加密算法。

二、jsencryptjs 加密解密

jsencrypt.js 可用于在前端进行 RSA 加解密。下面是一个简单的加密解密示例:

// 加密
var encrypt = new JSEncrypt();
encrypt.setPublicKey('your_public_key');
var data = encrypt.encrypt('hello world');
console.log(data);
// 解密
var encrypt = new JSEncrypt();
encrypt.setPrivateKey('your_private_key');
var data = encrypt.decrypt('encrypted_data');
console.log(data);

以上代码中,首先生成了一个 JSEncrypt 实例,并设置公钥/私钥。然后分别使用实例的 encryptdecrypt 方法进行加密和解密操作。

三、jsencrypt.js 下载

jsencrypt.js 可以通过多种方式下载,包括 NPM、GitHub 等。其中,从 GitHub 下载是最简单的方式。 在 jsencrypt.js 的 GitHub 页面,可以找到“Code”按钮,点击后会显示出多个选项,包括“Download ZIP”、“Open with GitHub Desktop”、“Use HTTPS”等。点击“Download ZIP”即可下载 jsencrypt.js 的压缩包。

四、jsencrypt.js RSA 填充

当使用 jsencrypt.js 进行加密时,需要注意 RSA 填充的问题。jsencrypt.js 默认使用的是 PKCS#1 v1.5 填充方式,这种填充方式已经被证实存在漏洞,不建议使用。 jsencrypt.js 还提供了其他填充方式,包括 OAEP(Optimal Asymmetric Encryption Padding)填充方式。下面是一个使用 OAEP 填充方式的示例:

var encrypt = new JSEncrypt();
encrypt.setPublicKey('your_public_key');
encrypt.setPadding(JSEncrypt.JS_OAEP);
var data = encrypt.encrypt('hello world');
console.log(data);

以上代码中,使用了 setPadding 方法设置了填充方式为 OAEP。其余部分与普通加密操作相同。

五、jsencrypt.js 解密返回 null

有时候使用 jsencrypt.js 进行解密时,可能会返回 null。这通常是由于填充方式的问题引起的。例如,当使用 PKCS#1 v1.5 填充方式时,如果加密的字节数大于密钥长度减去 11,解密操作就会返回 null。 为了解决这个问题,可以手动设置填充方式为 OAEP 等更安全的填充方式。具体方法参见前文提到的“jsencrypt.js RSA 填充”章节。

六、jsencrypt.js 解密为 null

在进行解密操作时,如果使用的密钥不正确,解密操作也会返回 null。因此,需要确保密钥的正确性。 除此之外,如果加密操作中使用了 padding 参数,解密操作也需要使用相同的 padding 参数。

七、jsencrypt.js 放到哪个路径

jsencrypt.js 可以放置在任意路径下,只要在 html 文件中正确引用即可。例如,可以将 jsencrypt.js 放置在项目根目录下的“js”文件夹中,然后在 html 文件中使用以下代码进行引用:

<script type="text/javascript" src="js/jsencrypt.js"></script>

以上代码中,通过 src 属性指定了 jsencrypt.js 文件的路径为“js/jsencrypt.js”。

总结

本文对 jsencrypt.js 进行了详细的介绍,包括其版本、加密解密、下载、填充、解密返回 null 以及放置路径等方面。掌握这些知识,可以更好地使用这个强大的 Javascript 库。