首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js加密输入/输出类型

Node.js加密输入/输出类型
EN

Stack Overflow用户
提问于 2012-08-19 22:58:30
回答 1查看 1K关注 0票数 4

我正在尝试弄清楚Node.js加密库,以及如何根据我的情况正确使用它。

我的目标是:

键入十六进制字符串3132333435363738313233343536373831323334353637383132333435363738

十六进制字符串中的文本463030303030303030303030303030303030

十六进制字符串70ab7387a6a94098510bf0a6d972aabe

我正在通过AES 256的c++实现和http://www.hanewin.net/encrypt/aes/aes-test.htm网站对此进行测试。

到目前为止,这就是我所要做的,它的工作方式并不是我期望的那样。我最好的猜测是密码函数的输入和输出类型不正确。唯一可以工作的是utf8,如果我使用十六进制,它会失败,并出现v8错误。任何想法,我应该转换或更改,以使其工作。

代码语言:javascript
复制
var keytext = "3132333435363738313233343536373831323334353637383132333435363738";
var key = new Buffer(keytext, 'hex');
var crypto = require("crypto")
var cipher = crypto.createCipher('aes-256-cbc',key,'hex');
var decipher = crypto.createDecipher('aes-256-cbc',key,'hex');

var text = "46303030303030303030303030303030";
var buff = new Buffer(text, 'hex');
console.log(buff)
var crypted = cipher.update(buff,'hex','hex')

本例中加密的输出是8cfdcda0a4ea07795945541e4d8c7e35,这不是我所期望的。

EN

回答 1

Stack Overflow用户

发布于 2015-01-12 23:48:55

当您从中派生测试向量的网站使用ecb模式时,您的代码就是在使用aes-256-cbc。此外,您调用的是createCipher,但是对于ECB,您应该使用不带IV的createCipheriv (请参见nodeJS: can't get crypto module to give me the right AES cipher outcome),

下面是一些演示这一点的代码:

代码语言:javascript
复制
var crypto = require("crypto");

var testVector = { plaintext : "46303030303030303030303030303030",
    iv : "",
    key : "3132333435363738313233343536373831323334353637383132333435363738",
    ciphertext : "70ab7387a6a94098510bf0a6d972aabe"};

var key = new Buffer(testVector.key, "hex");
var text = new Buffer(testVector.plaintext, "hex");
var cipher = crypto.createCipheriv("aes-256-ecb", key, testVector.iv);
var crypted = cipher.update(text,'hex','hex');
crypted += cipher.final("hex");
console.log("> " + crypted);
console.log("? " + testVector.ciphertext);

运行该代码的输出并不完全是我所期望的,但是加密输出的第一个块符合您的期望。可能是另一个需要调整的参数:

代码语言:javascript
复制
$ node test-aes-ecb.js 
> 70ab7387a6a94098510bf0a6d972aabeeebbdaed7324ec4bc70d1c0343337233
? 70ab7387a6a94098510bf0a6d972aabe
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12027463

复制
相关文章

相似问题

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