【发布时间】:2013-05-14 07:19:49
【问题描述】:
所以我有这个 JavaScript 加密库,我将用于 chrome 扩展,在 RSA 中加密文本字符串,然后将其发送到我的服务器,但是我注意到它使用 PKCS#1(类型 2)填充来填充数据.
我只是想知道这种填充算法对于 RSA 加密文本和通过未加密的 HTTP 连接发送是否足够安全。
这是执行填充的函数:
// PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint
function pkcs1pad2(s,n) {
if(n < s.length + 11) {
alert("Message too long for RSA");
return null;
}
var ba = new Array();
var i = s.length - 1;
while(i >= 0 && n > 0) {ba[--n] = s.charCodeAt(i--);};
ba[--n] = 0;
var rng = new SecureRandom();
var x = new Array();
while(n > 2) { // random non-zero pad
x[0] = 0;
while(x[0] == 0) rng.nextBytes(x);
ba[--n] = x[0];
}
ba[--n] = 2;
ba[--n] = 0;
return new BigInteger(ba);
}
此算法的安全性如何?只要密钥很大(在这种情况下为 4096 位),RSA 中使用的填充是否重要?
此填充是否被视为 PKCS#1 1.5?
谢谢。
【问题讨论】:
标签: javascript security encryption rsa