gpt4 book ai didi

javascript - 如何在 NodeJS 中使用 aes-256-ecb 正确加密字符串并使用 OpenSSL 的命令行解密?

转载 作者:行者123 更新时间:2023-11-30 10:22:29 27 4
gpt4 key购买 nike

我正在尝试通过 node.js 的内置加密库使用 aes-256-ecb 密码加密一个长的 UTF-8 编码字符串。下面是我在 node.js (v0.10.24) 中测试的加密代码以及 OpenSSL (OpenSSL 1.0.1 14 Mar 2012) 命令行的相应输出和解密命令。

使用node.js加密

var crypto = require('crypto');
var cipher = crypto.createCipher('aes-256-ecb','password');
var plaintext = [
'this is a very long long long long long long',
'long long long long long long long long long',
'long long long long long long string!!!!!!!!'
].join('')
console.log(cipher.update(plaintext,'utf8', 'base64') + cipher.final('base64'))

输出

XBnU6WZ9wr2GdA1YWZVhsG+mHQ0xlXXc8rAFEud6I/PqfFZL6Pdit7Sm8v+ViKNZmhgTzi7zfg8GHKFntkCDuj6F54TDaWKAdJRftLP9I+22jiKRvYtpD4SDV2oIy93MM5IMbSoBRvXayNF8H9FQnhACM5MHhHX1pLiR4yCg/l6iHH2BDLrwCSifGcGCaQYx

使用OpenSSL解密

echo -n 'XBnU6WZ9wr2GdA1YWZVhsG+mHQ0xlXXc8rAFEud6I/PqfFZL6Pdit7Sm8v+ViKNZmhgTzi7zfg8GHKFntkCDuj6F54TDaWKAdJRftLP9I+22jiKRvYtpD4SDV2oIy93MM5IMbSoBRvXayNF8H9FQnhACM5MHhHX1pLiR4yCg/l6iHH2BDLrwCSifGcGCaQYx' | openssl enc -d -aes-256-ecb -nosalt -a -pass pass:password

输出

bad decrypt
3074361544:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:evp_enc.c:532:

哪一个是错的;我的加密或解密?我怎样才能使它们彼此兼容?

最佳答案

在 openssl 命令中,您应该使用 -A 选项来对一行数据进行 base64 处理。

openssl enc -d -aes-256-ecb -nosalt -a -A -pass pass:password

关于javascript - 如何在 NodeJS 中使用 aes-256-ecb 正确加密字符串并使用 OpenSSL 的命令行解密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20973491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com