所以我有这个 JavaScript 加密库,我将使用它来加密 RSA 中的文本字符串然后将其发送到我的服务器的 chrome 扩展,但是我注意到它使用 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?
谢谢。