gpt4 book ai didi

node.js - NodeJS Crypto randomBytes 到字符串十六进制加倍大小

转载 作者:行者123 更新时间:2023-12-02 09:08:36 25 4
gpt4 key购买 nike

我在使用 NodeJS 加密和 crypto.randomBtyes 函数时遇到了一个奇怪的问题。我检测到似乎最近才出现在我的 NodeJS/Typescript 3.2 应用程序中的奇怪行为。

The error makes sense in its own right: Invalid key length at Cipheriv.createCipherBase (internal/crypto/cipher.js:79:18)



在检查返回的 key 长度时,它将请求的字节数加倍。我将其声明为“奇怪”,因为它之前有效(截至上周星期四/星期五(2019 年 3 月 7 日 - 2019 年 3 月 8 日),但截至今天早上,检测到了新行为。但是,我没有t 运行任何更新,所以希望我错过了一些明显的东西。我可以将我的 key 大小更改为我想要的一半,但是,我想在实现黑客之前看看我是否忽略了一些简单的东西。

这是我的加密实现的一个相当基本的例子。
import crypto = require('crypto');

export class Encryption {
static GenerateRandomBytesToHex(size: number): string {
return crypto.randomBytes(size).toString('hex');
}
}

但是在调用时:
let cipherKey = Encryption.GenerateRandomBytesToHex(32);

它返回的是一个 64 个字符的字符串,而不是一个 32 个字符的字符串。

Example: c8a8437677fcfab679f92c8470ffc34b932f5aaa3296c09f652d2becfe1db8b2 (64 characters in length)



这是本文中概述的概念的实现:
http://vancelucas.com/blog/stronger-encryption-and-decryption-in-node-js/

任何帮助将不胜感激。

最佳答案

GenerateRandomBytesToHex函数返回一个 String 中 X 字节长的哈希值其中每个字节以十六进制值显示。

数字的十六进制值 420x2A .您可以看到使用 2 个十六进制字符显示 1 个 Byte(从 0 到 254)。所以 32 Byte 显示为 64 个字符是正常的。

例如:https://codebeautify.org/string-hex-converter

enter image description here

关于node.js - NodeJS Crypto randomBytes 到字符串十六进制加倍大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55104802/

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