AES加密/解密为相同的输入,相同的iv,pad和模式提供deffenret结果

时间:2019-04-22 17:59:22

标签: javascript aes cryptojs

我正在尝试制作2个应用,第一个将数据加密,然后将其保存到文件中,第二个将尝试读取该文件并解密其内容

我正在使用crypto-js的{​​{1}}库

在我编写的第一个程序(加密器)中:

ionic/angular

然后我用:

encryptTest(input: string) {
    let key = "secret";
    return crypto.AES.encrypt(input, key, {
      iv: 'aTestIvValueKey',
      mode: crypto.mode.CBC,
      padding: crypto.pad.Pkcs7
    }).toString();
  }

它在输出上给了我

  

U2FsdGVkX186H1iRZM4Il + 10 / TS6gM7DoUaghwAZX3A =

当我尝试在第二个程序中解密此输出时,它没有给我先前的输入:this.encryptTest('hello world !') ,但是最讨厌的测试是:

  

68656c6c6f20776f726c642021

第二个程序(解密器):具有:

hello world !

PS:我使用相同的iv,pad和模式

2 个答案:

答案 0 :(得分:2)

解密时获得字节,则需要通过正确的编码传递这些字节,以获取字符字符。

答案 1 :(得分:0)

所以,我要解决的问题:

return crypto.AES.decrypt(input, key, {
      iv: 'aTestIvValueKey',
      mode: crypto.mode.CBC,
      padding: crypto.pad.Pkcs7
    }).toString(crypto.enc.Utf8);