【发布时间】:2018-03-09 13:22:31
【问题描述】:
我正在尝试在浏览器上使用 AES256 加密消息,将其发送到服务器,然后对其进行解密,但我一直在服务器端收到此错误:
error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
我尝试了几个小时来寻找解决方案,但我看不出问题出在哪里。我将crypto-js 用于客户端,将标准库用于Node.js crypto
这是我在客户端使用的代码示例。
import * as CryptoJS from 'crypto-js';
const secret = 'example';
const passphrase = 'secret-passphrase'
const encrypted = CryptoJS.AES.encrypt(secret, passphrase);
const encrypted64 = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
// make a request to a Node.js API with the password encrypted
这是我在服务器端使用的代码示例。
const crypto = require('crypto');
const secret = req.body.secret;
const passphrase = 'secret-passphrase'
const decipher = crypto.createDecipher('aes256', passphrase);
let decrypted = decipher.update(secret, 'base64', 'utf8');
decrypted += decipher.final('utf8');
有什么想法吗?
谢谢。
【问题讨论】:
-
你不能用https吗?
-
正如@James 所写,如果您通过 HTTPS 运行您的网站,则所有流量都已加密,并且使用 letencrypt 发布免费证书,没有真正的理由使用 HTTP
-
@James 我已经在使用
HTTPS协议了。 -
那你为什么想要额外的加密呢?它并没有真正使任何事情更安全
-
@Luca 我明白,你是对的。我可以依赖 HTTPS。据我个人所知,您对这个问题有什么想法吗?
标签: javascript node.js encryption