【问题标题】:CryptoJS not decrypting if wrapped in a function如果包装在函数中,CryptoJS 不会解密
【发布时间】:2020-11-03 19:27:52
【问题描述】:

我遇到了一个令我大吃一惊的问题。我有两段相同的代码,唯一的区别是我在其中一个函数中包装了一个调用(我将在我的类中经常使用),而另一个是显式的。好吧,一个有效,而另一个无效。

这很好用:

public testSymmetricEncryption(): void {
        const original = 'Understanding at the alpha quadrant that is when conscious klingons yell.';
        const password = 'myPassword';
        const encrypted = CryptoJS.AES.encrypt(original, password).toString();
        const decrypted = CryptoJS.AES.decrypt(encrypted, password).toString(CryptoJS.enc.Utf8);

        console.log('Test symmetric encryption', {original, password, encrypted, decrypted});
    }

而另一个不起作用(没有给出解密值,即''),有时甚至是Error: Malformed UTF-8 data 异常:

public testSymmetricEncryption(): void {
        const original = 'Understanding at the alpha quadrant that is when conscious klingons yell.';
        const password = 'myPassword';
        const encrypted = this.encryptSymmetric(original, original);
        const decrypted = this.decryptSymmetric(encrypted, password);

        console.log('Test symmetric encryption', {original, password, encrypted, decrypted});
}

    public encryptSymmetric(value: string, password: string) {
        return CryptoJS.AES.encrypt(value, password).toString();
}

    public decryptSymmetric(encrypted: string, password: string) {
        return CryptoJS.AES.decrypt(encrypted, password).toString(CryptoJS.enc.Utf8);
}

有人知道为什么会这样吗?

【问题讨论】:

    标签: javascript typescript cryptojs


    【解决方案1】:

    我想你这里可能有错字。而不是const encrypted = this.encryptSymmetric(original, original);,我觉得应该是const encrypted = this.encryptSymmetric(original, password);

    【讨论】:

    • 我查了一千遍也没看到。就是这样。感谢上帝,我的生活再次变得有意义。我想我现在必须删除这个问题。
    猜你喜欢
    • 2020-07-26
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多