Node.js Nodejs/Golang aes 256解密

Node.js Nodejs/Golang aes 256解密,node.js,go,cryptography,Node.js,Go,Cryptography,我有一个加密字符串,我可以使用下面的代码在nodejs中解密 let decrypt = crypto.createDecipheriv('aes-256-cbc-hmac-sha1', derived, iv); decrypt.setAutoPadding(false); let decrypted = decrypt.update(new_buf, 'binary', 'utf8') + decrypt.final('utf8'); 我必须能够在go程序中解密相同的缓冲区,我写了这个 f

我有一个加密字符串,我可以使用下面的代码在nodejs中解密

let decrypt = crypto.createDecipheriv('aes-256-cbc-hmac-sha1', derived, iv);
decrypt.setAutoPadding(false);
let decrypted = decrypt.update(new_buf, 'binary', 'utf8') + decrypt.final('utf8');
我必须能够在go程序中解密相同的缓冲区,我写了这个

fmt.Printf("buf size=%d\n", len(derivedKey))
block, err := aes.NewCipher(derivedKey)
if err != nil {
    fmt.Printf("%v\n", err)
    return ("0")
}
fmt.Printf("block size=%d\n", block.BlockSize())
cbc := cipher.NewCBCDecrypter(block, ivKey)
fmt.Printf("cbc block size=%d\n", cbc.BlockSize())
decr := make([]byte, len(encr))
cbc.CryptBlocks(decr, []byte(encr))

这不起作用(我想我不会在这里发布:p),但我也注意到,当我打印派生密钥的长度时,我得到32,但当我读取block.BlockSize()或cbc.BlockSize()时我得到的答案是16,所以我想知道我是否不必设置一些东西,因为它将我的算法检测为aes128而不是aes256。

好的,这工作正常实际上,块大小显示不是问题,它在内部为aes256创建了正确的块,我的问题是因为发送给我的参数在“encr”变量上添加了填充。但是上面的代码非常有效

我建议,如果您有一个更改示例,请在您的答案中发布它。正如你说的“一些帖子…同样的问题”。很抱歉,我不知道你说的改变是什么意思,我在很多其他人()和()中读过这些帖子,但它们与我的问题没有完全联系,尽管我现在正在探索如何去除填充物。这在node中很容易,但在golang中,我不能只执行parseInt(numWithPadding,10)。toString():请修复标题拼写:当您编写加密时,您是指“解密”还是“加密”?