gpt4 book ai didi

javascript - Node.JS 加密解密不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:04 25 4
gpt4 key购买 nike

我有一个类似的函数:

var Crypto = require('crypto');
var string_to_encode = "some number or string";
var encrypted_string = "";
var des_key = new Buffer("key string here", "base64");
var des_iv = new Buffer(0);
var des_encryption = Crypto.createCipheriv("DES-EDE3", des_key, des_iv);
encrypted_string = des_encryption.update(string_to_encode, "utf8", "base64");
console.log(string_to_encode+" => ["+encrypted_string+"]");

输出一个短的加密字符串。

但是当我尝试用以下方法扭转这个问题时:

var Crypto = require('crypto');
var string_to_decode = "encrypted string from above";
var deciphered_string = "empty";
var des_key = new Buffer("key string here", "base64");
var des_iv = new Buffer(0);
var des_decryption = Crypto.createDecipheriv("DES-EDE3", des_key, des_iv);
deciphered_string = des_decryption.update(string_to_decode, "base64", "utf8");
console.log(string_to_decode+" => ["+deciphered_string+"]");

它返回一个空字符串(即“上面的编码字符串 => []”)

我最初认为编码方法可能是错误的,但输入永远只是一个字符串形式的数字,并且 ascii 和 utf8 的结果是相同的。

我对 createDecipheriv 的理解是,它实际上是 createCipheriv 的镜像,它应该返回解密的字符串。这不正确吗?如果是这样,应该如何解密该字符串?

已解决:

编码和解码字符串都需要

.final() 。我们在其他地方没有使用过它,但我的理解是错误的。

最佳答案

更新函数不返回任何内容。您应该使用final 来获取您想要的字符串。

你想做一些类似的事情:

des_encryption.update(string_to_encode, "utf8", "base64");
encrypted_string = des_encryption.final('base64');

var des_encryption.update(encryptedPassword, 'base64', 'utf8');
deciphered_string = des_encryption.final('utf8');

关于javascript - Node.JS 加密解密不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25448162/

25 4 0
文章推荐: python - Nova Python 客户端 - 列出可用的 IP 地址
文章推荐: c - 如何调用 LocalFree()?
文章推荐: css - 删除 Navbar 和 Navbar.Header 之间的
文章推荐: C 全局在 ISR 中声明
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com