【问题标题】:How can I generate HEX-encoded CMAC-AES digest in Node JS?如何在 Node JS 中生成 HEX 编码的 CMAC-AES 摘要?
【发布时间】:2014-11-11 18:40:43
【问题描述】:

我需要使用 Node.JS 生成 HEX 编码的 CMAC-AES 摘要。我找到了library from GitHub。我想知道怎么称呼它? This 是我想在 node.js 中做的部分。我想通过keymessage

我将此库导入到我的 node.js 项目中。我想知道如何调用这个方法aesCmac

我的 index.js

var express = require('express');
var querystring = require('querystring');
var http = require('http');
var aesCmac = require('./lib/aes-cmac.js');

var app = express();

app.get('/aesCmac', aesCmac.aesCmac('xxxxxxxx' ,'LSCourse|0xxxxxxxx|103xxxxxxxx|xxxxx|xxxx.xxx.xx@xxx.com|2014-11-11T09:29:04Z'));

app.configure(function () {
    app.use(express.logger('dev')); /* 'default', 'short', 'tiny', 'dev' */
    app.use(express.bodyParser());
});

app.listen(80);

我收到了这个错误:

F:\NODE.JS\node-aes-cmac-master>node index.js
node-crypto : Invalid key length 32

crypto.js:315
  this._binding.initiv(cipher, toBuf(key), toBuf(iv));
                ^
Error: error:0607A082:digital envelope routines:EVP_CIPHER_CTX_set_key_length:invalid key length
    at new Cipheriv (crypto.js:315:17)
    at Object.Cipheriv (crypto.js:313:12)
    at aes128 (F:\NODE.JS\node-aes-cmac-master\lib\aes-cmac.js:25:23)
    at Object.exports.generateSubkeys (F:\NODE.JS\node-aes-cmac-master\lib\aes-cmac.js:9:11)
    at Object.exports.aesCmac (F:\NODE.JS\node-aes-cmac-master\lib\aes-cmac.js:32:25)
    at Object.<anonymous> (F:\NODE.JS\node-aes-cmac-master\index.js:9:29)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

我是 Node js 的新手。

【问题讨论】:

    标签: javascript node.js encryption cryptography oauth-2.0


    【解决方案1】:

    test file 显示了如何使用它。您不能简单地将aesCmac.aesCmac 插入app.get。您需要处理请求并发送响应。

    // some hex encoded 512bit key
    var key = new Buffer('2b7e151628aed2a6abf7158809cf4f3c', 'hex');
    var msg = new Buffer('LSCourse|0xxxxxxxx|103xxxxxxxx|xxxxx|xxxx.xxx.xx@xxx.com|2014-11-11T09:29:04Z');
    
    app.get('/aesCmac', function(req, res){
      var result = aesCmac.aesCmac(key, msg);
      res.status(200).send(result.toString('hex'));
    });
    

    【讨论】:

    • 我们需要在 Buffer 方法中传递消息吗?不能直接过去吗?
    • 是的,必须是Buffer
    • 它总是生成并返回相同的值。 &这个算法,和http://developer.pearson.com/learningstudio/course-apis/authentication/oauth2/sample-code这个没多大关系
    • 抱歉,我对 oauth 不熟悉,无法帮助您。从技术上讲,您并没有询问 oauth,而是询问了如何使用该库。
    猜你喜欢
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    相关资源
    最近更新 更多