来源
https://www.1024sou.com/article/780584.html
https://github.com/cqingt/RSA_JS_PHP
https://github.com/travist/jsencrypt/issues/110
在线Rsa 公私钥分解 Exponent、Modulus,Rsa公私钥指数、系数(模数)分解
http://tool.chacuo.net/cryptrsakeyparse
// 最大明文长度 = 密钥长度/8 - 11 。“密钥长度”即为模值n,一般为1024比特。
// RSA加密的明文长度被限定为128字节,这其中包含11字节的填充(padding)标记,
// 填充(padding)是为解密后容易识别而设置的,所以有效的明文长度最大为117字节。
// 加密时要按规则把明文用随机数填充到密钥长度,因此加密后到密文长度肯定也是密钥长度,
// 由于对明文的随机填充,密文每次都会不同(除非长度恰好只填充了规则里的3字节)
// 由于密钥长度和填充的关系,明文块长度 maxLength 不建议设置最大值117 ,但也不建议设置太小
// 一般设为8的倍数,93 ~ 117 ,
所谓签名其实就是用私钥加密,而验签就使用公钥解密,从而来证明数据的合法性。
私钥签名填充规则和公钥加密填充规则不同,但是大体差不多。
同样的数据使用同样的私钥签名,结果是一致的。这一点和加密不同。
签名值的长度肯定是和密钥长度完全一致,RSA2048就肯定是256字节,RSA1024就肯定是128字节,以此类推。
相关的 JS 和 PHP 的代码 https://files.cnblogs.com/files/yisuo/rsa-demo.zip
GET请求长度跟浏览器和WEB服务器有关,一般常见的浏览器的请求长度比WEB服务器的设定值要大。
Apache请求行长度的默认限制是8 * 1024 = 8192字节,除过版本等一些别的占用,最终将占8177个字节