了解 JSEncrypt
Understanding JSEncrypt
我一直在探索用于 RSA 加密和解密的各种 JavaScript 库,并遇到了一个,https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/2.3.1/jsencrypt.min.js 的 JSEncrypt。
但是,我很难理解这个库用于 RSA 加密和解密的逻辑和操作。主要是,
- 加密算法使用的算法有哪些?
- 使用了哪些填充方案?
- 有盐吗?如果是这样,盐是如何产生的?
- 任何其他应该注意的信息。
我找不到这个库的任何像样的文档,而且我无法理解源代码的丝毫。非常感谢任何帮助。
与其尝试阅读缩小的代码,不如查看 the homepage linked from npm (and also found as one of my top google hits) which both link to the code in github,它的格式和注释都很好,它应该如此。目前的代码实际上支持 RSA 签名和加密,加上密钥生成和读写 OpenSSL-compatible PEM 文件,虽然根据评论我认为签名可能不在你的版本 2.3.1 中,它不它似乎在这个存储库中或至少没有标记。 RSA核心在
https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rsa.ts clearly shows it uses 'pkcs1' 'type 1' padding for signature and 'type 2' for encryption; these are the schemes from PKCS1 v1.5, now retronymed RSASSA-PKCS1-v1_5 (RSASSA = RSA Signature Scheme with Appendix) and RSAES-PKCS1-v1_5 (RSAES = RSA Encryption Scheme) in current PKCS1 v2. Old-PKCS1 type 1 is deterministic; type 2 is randomized using https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rng.ts你可以自己判断。
我一直在探索用于 RSA 加密和解密的各种 JavaScript 库,并遇到了一个,https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/2.3.1/jsencrypt.min.js 的 JSEncrypt。
但是,我很难理解这个库用于 RSA 加密和解密的逻辑和操作。主要是,
- 加密算法使用的算法有哪些?
- 使用了哪些填充方案?
- 有盐吗?如果是这样,盐是如何产生的?
- 任何其他应该注意的信息。
我找不到这个库的任何像样的文档,而且我无法理解源代码的丝毫。非常感谢任何帮助。
与其尝试阅读缩小的代码,不如查看 the homepage linked from npm (and also found as one of my top google hits) which both link to the code in github,它的格式和注释都很好,它应该如此。目前的代码实际上支持 RSA 签名和加密,加上密钥生成和读写 OpenSSL-compatible PEM 文件,虽然根据评论我认为签名可能不在你的版本 2.3.1 中,它不它似乎在这个存储库中或至少没有标记。 RSA核心在 https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rsa.ts clearly shows it uses 'pkcs1' 'type 1' padding for signature and 'type 2' for encryption; these are the schemes from PKCS1 v1.5, now retronymed RSASSA-PKCS1-v1_5 (RSASSA = RSA Signature Scheme with Appendix) and RSAES-PKCS1-v1_5 (RSAES = RSA Encryption Scheme) in current PKCS1 v2. Old-PKCS1 type 1 is deterministic; type 2 is randomized using https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rng.ts你可以自己判断。