chacha20流加密的解密问题

发布于 2022-09-06 06:31:06 字数 1064 浏览 30 评论 0

ChaCha20 is a stream cipher developed by Daniel J. Bernstein. Its original design expands a 256-bit key into 2^64 randomly accessible streams, each containing 2^64 randomly accessible 64-byte (512 bits) blocks. It is a variant of Salsa20 with better diffusion.

在用libsodium的库 chacha20流加密算法

int crypto_stream_chacha20(unsigned char *c, unsigned long long clen,
                           const unsigned char *n, const unsigned char *k);

第一个函数是不可逆的 不知道有什么意义 只能得到密文 把密文再扔进去什么都不变

int crypto_stream_chacha20_xor(unsigned char *c, const unsigned char *m,
                               unsigned long long mlen, const unsigned char *n,
                               const unsigned char *k);
                               

第二个函数可以
1.将m用k,n计算输出c(密文)
2.把m换成密文c则输出明文

那么问题来了,如果你的密文缺了一段
比如说一个4个char长度密文 0x01 0x02 0x03 0x04
如果你缺了0x01 0x02 你是没有办法解密后面两个的
但是你缺了0x03 0x04 前面两个还是可以解出明文

这种情况也属于流加密?
这不是块加密吗 这将明文定了界,要数据块完整才能正确解密啊

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蓝色星空 2022-09-13 06:31:06

无解 只能手动分块加长度header 需要无脑加解密只能用table
一直以为流加密逐个对单字节加密 然而全部实现都分块处理分块异或
所以市面上的aes rc4 chacha 各种流加密都是假的

总结: 只有块加密

杀お生予夺 2022-09-13 06:31:06

一直以为流加密逐个对单字节加密 然而全部实现都分块处理分块异或
所以市面上的aes rc4 chacha 各种流加密都是假的
总结: 只有块加密

楼主太棒了,已经发现现代密码学体系中的Stream Cipher都是不存在的,建议公开发表paper提议改名


问题的根本是你懂的太少,还过度自信。遇到问题不去补基础知识解决,而是靠猜得出一个"某某都是假的"的结论

这将明文定了界,要数据块完整才能正确解密啊

Stream Cipher的本质是生成一段近似无限且随机比特流,因此得名流密码,加解密都是拿它和数据做模二加。你说的什么玩意儿,什么叫定了界,数据都不完整还指望给你正确解密? 建议了解流密码中同步和自同步的概念,然后好好补密码学常识

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文