Tag: aes gcm

node.jsencryption是否使用GCM模式的固定标签大小?

我正在node.js中以GCM模式实现密码scheme。 为了检查完整性,我必须在密文中附加/附加GCM标签。 不过,我不确定标签有多大! 在encryption++维基上 ,我读到的大小可能会有所不同,它实际上是一个GCM模式的参数。 引自维基,重点是我的: 双方必须提供和使用的参数是: 密钥和密钥大小 iv和iv大小 标签大小 但是,在节点文档中 ,没有关于标签大小的信息。 只是标签存在。 从文档引用: cipher.getAuthTag() 对于已validation的encryption模式(当前支持:GCM),此方法返回一个表示从给定数据计算出的validation标记的缓冲区。 在使用最后的方法完成encryption之后应该调用! 我是否应该期望标签大小不同,只需将标签大小和密文一起保存? 或者我可以假设标签大小始终小于128位,并在左侧填充零位?

无法使用Java解密AES-256 GCM

我有一个节点模块,可以使用AES-256 GCM进行encryption和解密。 现在我也试图用Java解密,无论节点模块encryption了什么,但是我总是收到AEADBadTagException。 我已经testing了自己的节点模块,并可以确认它是否按预期工作。 我知道Java假设authentication标签是消息的最后一部分,所以我确保标签是附加在节点模块中的最后一个东西。 现在我只是用“你好”这个词来testing。 这是来自节点的encryption消息: Q10blKuyyYozaRf0RVYW7bave8mT5wrJzSdURQQa3lEqEQtgYM3ss825YpCQ70A7hpq5ECPafAxdLMSIBZCxzGbv/Cj4i6W4JCJXuS107rUy0tAAQVQQA2ZhbrQ0gNV9QA== 盐现在还没有真正被使用,因为我试图保持简单的testing目的 节点模块: var crypto = require('crypto'); var encrypt = function(masterkey, plainText) { // random initialization vector var iv = crypto.randomBytes(12); // random salt var salt = crypto.randomBytes(64); var key = masterkey; // AES 256 GCM Mode var cipher = crypto.createCipheriv('aes-256-gcm', key, iv); // encrypt the given text […]