关于RSA填充算法的问题

时间:2013-05-19 17:43:24

标签: javascript security encryption rsa

所以我有这个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?

感谢。

1 个答案:

答案 0 :(得分:0)

是的,它看起来像PKCS#1填充。你想知道它的“安全性”是什么?是的,这是安全的。它仍然在PKI中使用。但是,如果您对安全性有疑问,可以使用OAEP。但是,大多数情况下问题不在算法方面。