首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NodeJS中使用aes-256-ecb正确加密字符串,并使用OpenSSL的命令行解密?

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

Stack Overflow用户
提问于 2014-01-07 13:57:31
回答 1查看 2K关注 0票数 2

我试图通过node.js内置的密码库使用aes-256-ecb密码加密一个长的UTF-8编码字符串。贝娄是我用node.js (v0.10.24)编写的加密代码,以及OpenSSL (OpenSSL 1.0.1,2012年3月14日)命令行的相应输出和解密命令。

使用node.js加密

代码语言:javascript
复制
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'))

输出

代码语言:javascript
复制
XBnU6WZ9wr2GdA1YWZVhsG+mHQ0xlXXc8rAFEud6I/PqfFZL6Pdit7Sm8v+ViKNZmhgTzi7zfg8GHKFntkCDuj6F54TDaWKAdJRftLP9I+22jiKRvYtpD4SDV2oIy93MM5IMbSoBRvXayNF8H9FQnhACM5MHhHX1pLiR4yCg/l6iHH2BDLrwCSifGcGCaQYx

用OpenSSL解密

代码语言:javascript
复制
echo -n 'XBnU6WZ9wr2GdA1YWZVhsG+mHQ0xlXXc8rAFEud6I/PqfFZL6Pdit7Sm8v+ViKNZmhgTzi7zfg8GHKFntkCDuj6F54TDaWKAdJRftLP9I+22jiKRvYtpD4SDV2oIy93MM5IMbSoBRvXayNF8H9FQnhACM5MHhHX1pLiR4yCg/l6iHH2BDLrwCSifGcGCaQYx' | openssl enc -d -aes-256-ecb -nosalt -a -pass pass:password

输出

代码语言:javascript
复制
bad decrypt
3074361544:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:evp_enc.c:532:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-07 14:45:56

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

代码语言:javascript
复制
openssl enc -d -aes-256-ecb -nosalt -a -A -pass pass:password
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20973491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档