encryption - 了解 JSEncrypt
问题描述
我一直在探索各种用于 RSA 加密和解密的 JavaScript 库,并且在https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/2.3.1/jsencrypt.min.js遇到了一个 JSEncrypt 。
但是,我很难理解这个库用于 RSA 加密和解密的逻辑和操作。主要是,
- 加密算法使用了哪些算法?
- 使用了哪些填充方案?
- 有盐吗?如果是这样,盐是如何产生的?
- 任何其他应注意的信息。
我找不到该库的任何体面的文档,也无法理解源代码的丝毫。任何帮助是极大的赞赏。
解决方案
不要尝试阅读缩小的代码,而是查看从 npm 链接的主页(也发现是我的热门谷歌点击之一),它们都链接到github中的代码,该代码的格式和注释都很好。当前代码实际上支持 RSA 签名以及加密,以及密钥生成和 OpenSSL 兼容 PEM 文件的读写,尽管根据评论我认为签名可能不在您的 2.3.1 版本中,这似乎没有在此存储库中或至少未标记。RSA 核心位于 https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rsa.ts清楚地表明它使用 'pkcs1' 'type 1' 填充作为签名,使用 'type 2' 进行加密;这些是来自 PKCS1 v1.5 的方案,现在在当前PKCS1 v2中重新命名为 RSASSA-PKCS1-v1_5(RSASSA = RSA Signature Scheme with Annex)和 RSAES-PKCS1-v1_5(RSAES = RSA Encryption Scheme)。Old-PKCS1 type 1 是确定性的;类型 2 使用https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rng.ts随机分配,您可以自行判断。
推荐阅读
- html - 填充 Font-awesome 图标的透明度
- javascript - 如何在 Nest.js 中查询多个 @ManyToMany 中的数据
- javascript - 将数据转换为具有多级标题的 HTML 数据透视表
- java - Eclipse 的代码搜索功能如何工作?
- git - Git - 如何“软”合并?
- mysql - 尝试创建表时出现错误,我不知道为什么
- c - 添加两个 char 数组的值
- windows-subsystem-for-linux - 在 Windows 上使用多个 linux 子系统更改 bash.exe
- r - 按两行分组汇总
- python - 如何在 PonyORM 中获取当前插入的自动递增主键?