【问题标题】:Encode data using codeiginter encryption library and dycrypting using js-mcrypt使用 codeiginter 加密库对数据进行编码并使用 js-mcrypt 进行解密
【发布时间】:2016-05-26 01:08:15
【问题描述】:

我一直试图弄清楚如何使用使用 codeiginter 的加密库编码的 javascript 来解密字符串。

到目前为止,我发现这是作为指南php to js-mcrypt

但我不知道如何提供 iv 变量。 因为codeiginter在加密时随机生成。

我的示例代码是

//PHP Side
    $this->encrypt->encode('apple','1234567');
    //The result is : 2lek4Q1mz4CJtTy2ot/uJWlfeGKuGiUKuKkR5Utkwc1nSWjf3JqG8gOhNmS13mt25QVbgP/2QOuffpn7rhIOmQ==


//JS Side
var encrypted = '2lek4Q1mz4CJtTy2ot/uJWlfeGKuGiUKuKkR5Utkwc1nSWjf3JqG8gOhNmS13mt25QVbgP/2QOuffpn7rhIOmQ==';



var key = 'fcea920f7412b5da7be0cf42b8c93759';//md5 version of "1234567"

var iv = 'some 32 length string';// I don't know how to get the IV because it constantly change in PHP

var decrypted = mcrypt.Decrypt(atob(encrypted), iv, key, 'rijndael-256', 'cbc');

                console.log(decrypted);

【问题讨论】:

    标签: javascript php codeigniter mcrypt


    【解决方案1】:

    一个随机的 iv 通常预先添加到加密数据中。

    使用 'rijndael-256' 对 5 个字节('apple')进行简单加密并进行填充将产生 32 个字节的输出。在这种情况下,加密输出是 88 字节,因此 iv 可能与其他内容一起存在。

    此外,mcrypt 有点脑残,因为它不支持标准 PKCS#7 (AKA PKCS#5) 填充,因此这也是一个互操作性问题。

    注意:“rijndael-256”表示块大小为 256 位,而不是密钥大小,AES 本质上是块大小为 128 位的 Rijndael,最好使用 128 位的块大小和与 AES 兼容。

    【讨论】:

      猜你喜欢
      • 2011-01-31
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2014-04-01
      • 2011-08-11
      • 2011-10-01
      • 1970-01-01
      相关资源
      最近更新 更多