Kal*_*e V 1 encryption rsa salt padding jsencrypt
我一直在探索用于 RSA 加密和解密的各种 JavaScript 库,并发现了一个 JSEncrypt,位于https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/2.3.1/jsencrypt.min.js。
然而,我在尝试理解该库用于 RSA 加密和解密的逻辑和操作时遇到了很大的困难。主要是,
我无法找到这个库的任何像样的文档,而且我无法理解丝毫的源代码。任何帮助是极大的赞赏。
不要尝试阅读缩小的代码,而是查看从 npm 链接的主页(也发现它是我最热门的 google 命中之一),它们都链接到github 中的代码,该代码的格式很好,并且有注释。当前的代码实际上支持 RSA 签名和加密,以及密钥生成和 OpenSSL 兼容 PEM 文件的读写,尽管根据评论我认为签名可能不在您的版本 2.3.1 中,这似乎并不存在位于此存储库中或至少未标记。https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rsa.ts上的 RSA 核心 清楚地表明它使用“pkcs1”“type 1”填充进行签名,使用“type 2”进行加密;这些是 PKCS1 v1.5 中的方案,现在在当前 PKCS1 v2 中重新命名为 RSASSA-PKCS1-v1_5(RSASSA = 带附录的 RSA 签名方案)和 RSAES-PKCS1-v1_5(RSAES = RSA 加密方案)。Old-PKCS1 类型 1 是确定性的;类型 2 使用https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rng.ts进行随机化,您可以自己判断。