如何使用CryptoJs正确加密AES256的方法

助长

嗨,我是React Native的新手,我可以使用PHP加密数据,但是不能使用Crypto JS使用React Native加密数据。(导致JS的结果总是不同,正确的是来自PHP)

这是PHP中的示例:

<?php

$data = 'my1234567';
$iv = 'yourivare1234567';
$key = '356d9abc7532ceb0945b615a622c3370';

$abc = openssl_encrypt($data, 'aes-256-cbc', $key, 0,  $iv);
var_dump($abc);
// result is : string(24) "9EF/QLpR+o/KrVueiI4L0g=="

现在我尝试使用Crypto JS在我的React Native应用程序中复制它。但是结果总是不同的,我期望像上面那样使用硬编码数据和iv的结果是:“ 9EF / QLpR + o / KrVueiI4L0g ==”

以下是JS中的源代码:

const data = 'my1234567';
const iv = 'yourivare1234567';
const key = '356d9abc7532ceb0945b615a622c3370';

const fkey = CryptoJS.enc.Hex.parse(key);
const fiv = CryptoJS.enc.Hex.parse(iv);

const enc = CryptoJS.AES.encrypt(data, md5key, {
        iv: fiv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7,
});

const final = enc.ciphertext.toString(CryptoJS.enc.Base64);
console.log('encrypted password: ' , final) // result is kYLFiwI1IDZcFfsKsbrbzg==

有人可以帮忙吗?

之前谢谢

托帕可

fkey并且fiv必须使用UTF8编码器进行解析。md5key未定义,必须替换为fkey

const data = 'my1234567';
const iv = 'yourivare1234567';
const key = '356d9abc7532ceb0945b615a622c3370';

const fkey = CryptoJS.enc.Utf8.parse(key);
const fiv = CryptoJS.enc.Utf8.parse(iv);

const enc = CryptoJS.AES.encrypt(data, fkey, {
        iv: fiv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7,
});

const final = enc.ciphertext.toString(CryptoJS.enc.Base64);
console.log('encrypted password: ' , final) // result is 9EF/QLpR+o/KrVueiI4L0g==
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>

注意(出于测试目的)出于安全原因,不得使用静态IV。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章