【发布时间】:2013-11-27 16:26:10
【问题描述】:
以下代码为添加到页面的单点登录按钮生成 HTML 输出。在节点版本 0.5.x 中,服务器在单击按钮时接受密钥,但升级到 0.10.x 后它不起作用并产生不同的输出。没有错误。加密类有变化吗?请注意,密钥、url 和 iv 已稍作更改以避免发布安全信息,但长度正确。
var util = require('util');
var crypto = require('crypto');
var fs = require('fs');
var dateFormat = require('dateformat');
var AESCrypt = {};
AESCrypt.encrypt = function(cryptkey, iv, cleardata) {
var encipher = crypto.createCipheriv('aes-256-cbc', cryptkey, iv),
encryptdata = encipher.update(cleardata);
encryptdata += encipher.final('binary');
encode_encryptdata = new Buffer(encryptdata, 'binary').toString('hex');
return encode_encryptdata;
}
function getKey(email){
var now = new Date();
var key = new Buffer("F4553ECE8E0039675E8DA176D23BD82D455BB6272B574FDD6185296432CE1AD9",'hex'),
iv = new Buffer("D95897EA52A8A0C8DF231C8F2DBE59A7",'hex'),
key_bin = key.toString('binary'),
iv_bin = iv.toString('binary'),
text = new Buffer('mystring','ascii'),
text_bin = text.toString('binary');
var enc = AESCrypt.encrypt(key_bin, iv_bin, text_bin);
var page = '<form method="POST" action="https://somedomain.com/AES.aspx"><input type="hidden" name="key" value="'+enc+'"/><input type="hidden" name="ouid" value="1"/><input type="submit" value="Log ine"/></form>';
return page;
}
if(process.argv[2]) {
email = process.argv[2];
console.log(getKey(email));
}
else{
console.log('Something may be wrong with your email address>')
}
【问题讨论】:
-
你试过
Buffer.concat而不是+=吗?我回答了另一个问题,+=无法正常工作。 -
你好,你试过了吗?
-
抱歉,这行得通
标签: node.js cryptography aes