这是我的代码:
var crypto = require('crypto')
function aese (key) {
return crypto.createCipher('aes128', key)
}
var x1 = crypto.randomBytes(16)
var y1 = crypto.randomBytes(16)
var a = aese(y1)
a.write(x1)
a.end()
var ct = a.read()
console.log(ct.length); //should be 16 but is 32
答案 0 :(得分:2)
这是由于填充增加了至少一个字节,16个字节至少提供了17个,由于块大小而填充到32个。
尝试将加密字节数减少到15,然后输出16个字节。
另一种选择是turn off padding;
var x1 = crypto.randomBytes(16)
var y1 = crypto.randomBytes(16)
var a = aese(y1)
a.setAutoPadding(false); <--- turn of auto-padding
a.write(x1)
a.end()
var ct = a.read()
console.log(ct.length); <--- gives 16 as output