【问题标题】:Facing problem within salt in CryptoJs with Laravel and Angular 6使用 Laravel 和 Angular 6 在 CryptoJs 中面临盐问题
【发布时间】:2019-01-04 18:56:39
【问题描述】:

在 Laravel5 中,我通过以下 salt 对消息进行了加密,并在 API 中使用 base64 编码传递了 salt 值:

    $data = [];
    $cipher = env('APP_CIPHER'); // AES-256-CBC
    $iv = random_bytes(openssl_cipher_iv_length($cipher));
    $key = env('APP_KEY'); // XXXXXZNUK5nhIMBbBEwKISqQ9ioXXXXX
    $value = \openssl_encrypt(
        json_encode($response),
        $cipher, $key, 0, $iv
    );
    $data['data'] = $value;
    $data['salt'] = base64_encode($iv);

    return $data;

在 Angular 6 中,我想解密消息。我做了以下代码,但它向我展示了malformed utf-8 data

var key = CryptoJS.enc.Utf8.parse('XXXXXZNUK5nhIMBbBEwKISqQ9ioXXXXX');
var salt = atob(this.countryList.response.salt);
var iv = CryptoJS.enc.Utf8.parse(salt);
var decrypted = CryptoJS.AES.decrypt(this.countryList.response.data, key, {
keySize: 128 / 8,
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
console.log('utf8 = ' + decrypted.toString(CryptoJS.enc.Utf8));

消息/值存储到this.countryList.response.data

我在this.countryList.response.salt 中收到的base64 编码盐值。

我的代码有错误吗?

请注意,如果我在 Laravel 中执行 $iv = '1212121212121212'; 并在 Angular 中执行 var salt = '1212121212121212';,它会返回预期的结果。

【问题讨论】:

    标签: angular laravel cryptojs


    【解决方案1】:

    我犯了上面的错误。我做了以下事情:

    var salt = (this.countryList.response.salt);
    var iv = CryptoJS.enc.Base64.parse(salt);
    

    注意,我也删除了 atob 功能。

    所以应该是Base64,而不是Utf8。因此,Angular 代码将是:

    var key = CryptoJS.enc.Utf8.parse('XXXXXZNUK5nhIMBbBEwKISqQ9ioXXXXX');
    var salt = (this.countryList.response.salt);
    var iv = CryptoJS.enc.Base64.parse(salt);
    var decrypted = CryptoJS.AES.decrypt(this.countryList.response.data, key, {
    keySize: 128 / 8,
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
    });
    console.log('utf8 = ' + decrypted.toString(CryptoJS.enc.Utf8));
    

    【讨论】:

      猜你喜欢
      • 2023-03-06
      • 2023-03-06
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      相关资源
      最近更新 更多