簡體   English   中英

節點 aes-256-cbc 中的加密和解密出錯

[英]Encryption & decryption in node aes-256-cbc goes Error

我需要使用 aes-256-cbc 算法使用給定密鑰加密我的數據,但在使用加密庫時節點中出現錯誤“RangeError:無效密鑰長度”。

Php 代碼結果 "w8mBJyHzQ3yJlkSvAX8t3qy9GVaUvBiOBAPFDXOzFMQ=" 與

key = "9v6ZyFBzNYoP2Un8H5cZq5FeBwxL6itqNZsm7lisGBQ="
text = "Hello, Help me with this"
output is "w8mBJyHzQ3yJlkSvAX8t3qy9GVaUvBiOBAPFDXOzFMQ="
// Encryption Function
function encrypt($text, $key, $size = 16)
{
    $pad = $size - (strlen($text) % $size);
    $padtext = $text . str_repeat(chr($pad), $pad);
    $crypt = openssl_encrypt($padtext, "AES-256-CBC", base64_decode($key), OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, '0123456789abcdef');
    return base64_encode($crypt);
}
// Decryption Function
function decrypt($crypt, $key)
{
    $padtext = openssl_decrypt(base64_decode($crypt), "AES-256-CBC", base64_decode($key), OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, '0123456789abcdef');
    $pad = ord($padtext[strlen($padtext) - 1]);
    if ($pad > strlen($padtext)) {
        return false;
    }

    if (strspn($padtext, $padtext[strlen($padtext) - 1], strlen($padtext) - $pad) != $pad) {
        $text = "Error";
    }
    $text = substr($padtext, 0, -1 * $pad);
    return $text;
}

和節點代碼結果“RangeError:無效的密鑰長度”

key = "9v6ZyFBzNYoP2Un8H5cZq5FeBwxL6itqNZsm7lisGBQ="
data = "Hello, Help me with this"
output is "RangeError: Invalid key length"
function encrypt(data, key) {
    try {
        const cipher = crypto.createCipheriv("aes-256-cbc", atob(key), '0123456789abcdef');
        return cipher.update(data, 'utf-8', 'base64') + cipher.final('base64');
        // let encryption = Buffer.concat([cipher.update(Buffer.from(data, "utf8")), cipher.final()]);
        // return encryption.toString("base64");
    } catch (error) {
        console.log(error);
        return error
    }

}
function decrypt(enc_data, key) {
    try {
        const decipher = crypto.createDecipheriv("aes-256-cbc", atob(key), '0123456789abcdef');
        return (decipher.update(enc_data, 'base64', 'utf-8') + decipher.final('utf-8'));
        // const decryption = Buffer.concat([decipher.update(Buffer.from(enc_data, "base64")), decipher.final()]);
        // return decryption.toString("utf8");
    } catch (error) {
        console.log(error);
        return error
    }
}

let cipher = crypto.createCipheriv("aes-256-cbc", Buffer.from(keyStr,'base64'), Buffer.from(ivStr));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM