问题标签 [jsbn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - SJCL 和 java Bouncy Castle RSA 之间的加密兼容性
我正在开发一个使用 RSA 加密的 android 应用程序。
我可以从我的服务器上获取我的私钥和我的朋友的公钥。
私钥是这样的:
使用此密钥,我需要解密从我的服务器接收并已由 javascript 库 (SJCL) 加密的消息。我还需要对消息进行加密,以便能够使用 javascrypt 库对其进行解密。
现在我已经这样做了:
现在我明白了:
javax.crypto.IllegalBlockSizeException:输入必须小于 96 字节
javascript - jsbn.js BigInteger - 如何用普通数字实例化?
我都试过了:
和
但两者都给了我错误:
你只能用字符串实例化吗?
javascript - 使用 JSBN 为 Javascript RSA 密钥生成选择 N 和 E
我正在使用http://www-cs-students.stanford.edu/~tjw/jsbn/上的 JSBN 库。我特别想在 rsa.js 中进行 RSASetPublic() 调用,如下所示:
例如,当 N =“667”和 E =“327”时,我收到警报“对于 RSA 来说消息太长”。
功能是
它调用其他函数...
BigInteger fromString() 函数是......
然后,要使用生成的密钥,例如使用 RSAEncrypt(text),n 在文本被填充和加密时很重要......
因此,我从各种来源收集了以下建议:
- N 是模数,两个素数的乘积 (N=pq),长度不超过 k 位
- p 和 q 是两个大素数?
- N用于指定keysize
- 典型的位长为 k = 1024, 2048, 3072, 4096,...
- 从 {2,4,8,16,32,256} 中为 parseBigInt 选择第二个参数
- e 是公共指数,一个小于和互质的数 (p-1)(q-1)
- 从 {3, 5, 17, 257, 65537} 中选择 e 的值
像http://asecuritysite.com/encryption/rsa这样的网站有助于对算法的高级理解,但我仍然不知道他如何转换为特定的参数分配,或者 N 和 E(相对于 n 和 e)明确意思是。那么N和E应该是什么?我该如何选择,这样消息才不会“对于 RSA 来说太长”?
javascript - Could JSBN/Forge be used to generate RSA private/public key pair?
Looking at JSBN, RSAGenerate(B,E)
takes the bit length B
and the public key E
as arguments. Does that mean it the public key can only be generated separately and be provided as an argument? Does that also mean Forge can't generate the key pair like BigInt http://www.leemon.com/crypto/BigInt.html?
Thanks
javascript - JS和Python之间的RSA加密和解密(pycrypto)
我从 JS RSA 库( http://www-cs-students.stanford.edu/~tjw/jsbn/ )加密纯文本并从 python Crypto.PublicKey 解密。
但是,当我用 python 从 JS 解密密文时,它有虚拟文本。我不知道他们为什么会这样。
所以,我想要没有虚拟的明文。(例如测试)
步
在 Python 中制作密钥对。
/li>在 JS 中保存模数、指数并加密“测试”
result(hex string): d0ab7e22f92adcca7182e3c622b513382d163033df5ca0f3c0327e8a1774258800ae57dfc98522f5ed40a4bed2f4b54f46ea800ff1ef522b104b0f874a598f6bbcf5453506f8bf2f8aa3b04b0c73f0018564707304b3a059326d51945d3ff0282d63c2c4c1ea6ba5a2172af83ef8bdc1d104a8d67ba95ee97ab89b36cd5c34d4
在 Python 中使用 PrivateKey 解密
结果:\x02\xf0\xae\xafK\xd3\x17\xfc\xf4\xd6\xd9=\xee7\x04\x94\xea\x9c\xd8\xf7--\x19\x05$!'#\xad\ x82'\xfcKG\xadK\xb6_\xabMZ:\x9dU\xa4\xc0[\x8c\xa6hC\x93\xf7\xbc\xf1:\x9f\x107D\xe8\xfe\x07R\x8c\xd7\xb3\xe6\ xc6\xcf^\x92\xa2\xe2X\xe4\xaf|\x8aS\xfe\xd3\x84)\xc3\x82\xdc\xd1\x7f\xc9\x12\xd0\x94\xd2jS\xee\x83\xfda \xc6\xc7d\xdd\x0b2\xe6\x1d\x84\x0c\x93\x8aK\xc2\x10U\xc0Y~\xbf\x15\xfa\x00测试
javascript - 将负 BigInteger(Tom Wu 的 JSBN 库)值转换为十六进制值
我正在尝试将 BigInteger 数字转换为其十六进制格式,以便我可以将其用于进一步的 HMAC 计算。我已经使用以下帖子来获取执行此操作的代码。
该代码对于正 BigInteger Numbers 工作得非常好,但在用于负 BigInteger Numbers 时不会产生正确的结果。
例如:考虑以下链接帖子中的代码片段:
我将num值传递为-52并将lengthInBytes值传递为8。生成的hexNum(intToWords 函数的第三行)是“-34”(而不是“ffffffffffffffcc”)
有人可以帮我正确地将输入数字转换为正确的十六进制格式吗?
javascript - javascript 中的 RSA 不再支持 ASCII/字节数组
我正在使用来自http://www-cs-students.stanford.edu/~tjw/jsbn/的 rsa.js v1.0在浏览器中加密 ASCII 字符串。该字符串实际上是一个 16 字节数组,其中包含一个双倍长度的 TripleDes 键。使用 rsa v1.0 可以。字节数组在服务器上被正确解密(使用 Bouncy Castle 或 Thales HSM)为 16 字节数组。
例如
移动 rsa.js v1.4 时,这不再有效。Bouncy castle 会解密数据,但它现在是 25 字节数组,而不是 16 字节数组。
我可以在 rsa.js 库中看到的主要区别在于 v1.1 发行说明:
在 PKCS1 编码和解码 JavaScript 字符串时,添加了对非 ASCII 字符的 utf-8 编码的支持。
v1.0 中的 PKCS#1 填充是:
v1.1 及更高版本中的 PKCS#1 填充函数为:
rsa.js v1.0 将每个字符视为 1 字节字符。从 v1.1 开始测试字符是否为多字节 utf-8。
看来我唯一的选择是:
- 坚持使用 rsa.js v1.0
- 创建 rsa.js(和 rsa2.js)的修改版本,允许我禁用 utf-8 字符检测。
- (已编辑)更改代码以使用支持 PKCS#1 v2 (oaep) 的 defencejs.com。
想法?
key - 通过jsbn库加密,然后通过WebCrypto解密
我们使用 jsbn 库 PKCS#1 加密样式填充来加密消息。现在我们想为网络加密更改 jsbn 库。
AES 密钥没有问题。问题在于 RSA 密钥。
我已经通过 jsbn 库加密了消息。是否可以使用 RSA 密钥通过网络加密解密消息?
WebCrypto 文档仅支持 RSA-OAEP 算法进行解密,是否可以使用 PKCS (RSASSA-PKCS1-v1_5) 算法?
javascript - 如何在 jsbn 打字稿中访问 SecureRandom?
我曾经以这种方式访问 jsbn.js 中的 SecureRandom
如何在 jsbn.ts 中访问它?由于似乎要导入的功能有限
包.json
谢谢你。
javascript - jsbn 库 BigInteger 否定函数似乎不起作用
我正在使用 jsbn 库来管理 javascript 应用程序中的 BigIntegers。negate 功能似乎无法正常工作。
我希望 negate 函数像 Java 一样工作。
但是使用 jsbn 库,下面的代码会产生这个结果......
你可以在这里试试这个代码https://runkit.com/gikoo/jsbn-negate-function/1.0.0