AES 加密/解密为相同的输入和相同的 iv、pad 和模式给出 deffenret 结果
AES encryption / decryption gives deffenret result for the same input, and same iv, pad & mode
我正在尝试制作 2 个应用程序,第一个对数据进行加密,并将其保存到一个文件中,然后第二个将尝试读取该文件并解密其内容
我正在使用 crypto-js
图书馆 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();
}
然后我调用它:
this.encryptTest('hello world !')
它给了我输出:
U2FsdGVkX186H1iRZM4Il+10/TS6gM7DoUaghwAZX3A=
当我尝试在第二个程序中解密此输出时,它没有给我之前的输入:hello world !
但是一个破旧的测试是:
68656c6c6f20776f726c642021
第二个程序(解密器):有:
decryptTest(input: string) {
let key = "secret";
return crypto.AES.decrypt(input, key, {
iv: 'aTestIvValueKey',
mode: crypto.mode.CBC,
padding: crypto.pad.Pkcs7
}).toString();
}
PS:我使用相同的 iv、pad 和模式
当你解密时你得到字节,你需要通过正确的编码传递这些字节才能得到字符中的单词。
所以,我做了什么来解决:
return crypto.AES.decrypt(input, key, {
iv: 'aTestIvValueKey',
mode: crypto.mode.CBC,
padding: crypto.pad.Pkcs7
}).toString(crypto.enc.Utf8);
我正在尝试制作 2 个应用程序,第一个对数据进行加密,并将其保存到一个文件中,然后第二个将尝试读取该文件并解密其内容
我正在使用 crypto-js
图书馆 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();
}
然后我调用它:
this.encryptTest('hello world !')
它给了我输出:
U2FsdGVkX186H1iRZM4Il+10/TS6gM7DoUaghwAZX3A=
当我尝试在第二个程序中解密此输出时,它没有给我之前的输入:hello world !
但是一个破旧的测试是:
68656c6c6f20776f726c642021
第二个程序(解密器):有:
decryptTest(input: string) {
let key = "secret";
return crypto.AES.decrypt(input, key, {
iv: 'aTestIvValueKey',
mode: crypto.mode.CBC,
padding: crypto.pad.Pkcs7
}).toString();
}
PS:我使用相同的 iv、pad 和模式
当你解密时你得到字节,你需要通过正确的编码传递这些字节才能得到字符中的单词。
所以,我做了什么来解决:
return crypto.AES.decrypt(input, key, {
iv: 'aTestIvValueKey',
mode: crypto.mode.CBC,
padding: crypto.pad.Pkcs7
}).toString(crypto.enc.Utf8);