首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以使用Argon2加密数据吗?

我可以使用Argon2加密数据吗?
EN

Cryptography用户
提问于 2023-05-02 11:20:42
回答 1查看 88关注 0票数 1

通常,我使用Argon2生成加密密钥,然后使用AES使用该密钥加密数据。我是否可以将散列大小设置为等于数据大小,将关联的数据设置为随机值,然后在Argon2输出上使用Xor对数据进行加密/解密?或者,是否有一些加密属性使得以这种方式使用它不安全?

EN

回答 1

Cryptography用户

发布于 2023-05-02 13:02:28

如果您查看Argon2的伪代码,您会发现它在函数末尾创建了“标记”:

代码语言:javascript
复制
 return Hash(C, tagLength)

标记本身只是一个散列。对于Argon2,这个Hash调用使用Blake2b创建一个具有可配置输出大小的哈希函数,正如上面的调用所暗示的那样。对于更大的输出,它使用初始的Blake2b哈希作为起点,然后通过重新散列材料来迭代地创建后续块。

显然,如果所有的块都被输出,那将是个问题,因为这意味着任何人都可以重建所有的比特,如果它们是新的第一个块。幸运的是,在为每个块生成的64个字节中,Argon2只输出32个字节,留下256个比特保持未知。这也意味着您需要对Blake2b进行两次调用,而不是一次,将预期的最大性能减半。显然这不是为了最大的速度而设计的。注意,digestSize --输出的长度--也包含在对Blake2b的初始调用中,这意味着您必须事先知道密钥流大小。

那么它安全吗?好吧,有约化圆Blake2 2的分辨器,但这些都不实用,量子计算机不太可能很快就破坏算法。在每个块中保留256位未知数似乎也不错。

所以是的,原则上你可以用它来加密使用异或。Argon2也有一个2^{32}字节的限制,所以不可能超过4 GiB。使用快速认证(流)密码肯定会更好。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/106363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档