首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试用CryptoJS打印十六进制字符串

尝试用CryptoJS打印十六进制字符串
EN

Stack Overflow用户
提问于 2022-05-12 21:15:24
回答 1查看 520关注 0票数 1

我试图使用CryptoJS加密某些内容,然后生成加密文本的十六进制字符串。

代码语言:javascript
复制
function EncryptAES(text, key) {
  var encrypted = CryptoJS.AES.encrypt(text, key);
  return CryptoJS.enc.Hex.stringify(encrypted);
}

var encrypted = EncryptAES("Hello, World!", "SuperSecretPassword");

console.log(encrypted);

但是,不使用十六进制字符串,而是将空行打印到控制台。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-12 21:47:34

CryptoJS.AES.encrypt()返回一个封装多个数据的CipherParams对象,其中包括WordArray (s. 这里)的密文。默认情况下,.toString()返回WordArray的十六进制编码数据。

代码语言:javascript
复制
function EncryptAES(text, key) {
    var encrypted = CryptoJS.AES.encrypt(text, key);
    return encrypted.ciphertext.toString()
}

var encrypted = EncryptAES("Hello, World!", "SuperSecretPassword");

console.log(encrypted);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>

请注意,在您的示例中,键材料作为字符串传递,因此被解释为密码(s.这里),通过密钥派生函数与随机的8字节盐一起推断密钥和IV,这就是为什么密文每次对相同的输入数据进行更改的原因。

因此,解密不仅需要密文,而且还需要在CipherParams对象中封装salt。

对于CipherParams对象,.toString()返回Base64编码的OpenSSL格式的数据,包括Salted__的ASCII编码,后面是8字节的salt和实际的密文,因此包含解密所需的所有信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72222132

复制
相关文章

相似问题

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