了解JSEncrypt

问题描述

我一直在探索各种用于RSA加密和解密的JavaScript库,并在https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/2.3.1/jsencrypt.min.js遇到了一个JSEncrypt。

但是,在尝试理解该库用于RSA加密和解密的逻辑和操作时,我面临着巨大的困难。主要是

  1. 加密算法使用什么算法?
  2. 使用哪种填充方案?
  3. 有盐吗?如果是这样,盐是怎么产生的?
  4. 其他应注意的信息。

我找不到该库的任何体面的文档,也无法理解源代码的一点点。任何帮助将不胜感激。

解决方法

请参阅the homepage linked from npm(并且也是我的热门Google热门歌曲之一),而不是尝试阅读缩小的代码,它们都链接到code in github,该文件的格式和注释正确。当前的代码实际上支持RSA签名以及加密,密钥生成以及与OpenSSL兼容的PEM文件的读写,尽管基于注释,我认为签名可能不在您的2.3.1版本中,存放在此存储库中或至少未标记。 RSA核心位于 https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rsa.ts清楚地表明它使用“ pkcs1”,“类型1”填充进行签名,并使用“类型2”进行加密;这些是PKCS1 v1.5中的方案,现在以当前PKCS1 v2的名称重新命名为RSASSA-PKCS1-v1_5(带有附件的RSASSA = RSA签名方案)和RSAES-PKCS1-v1_5(RSAES = RSA加密方案)。 Old-PKCS1类型1是确定性的;您可以根据自己的判断使用https://github.com/travist/jsencrypt/blob/master/lib/jsbn/rng.ts来随机分配2型。