chacha20流加密的解密问题
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
无解 只能手动分块加长度header 需要无脑加解密只能用table
一直以为流加密逐个对单字节加密 然而全部实现都分块处理分块异或
所以市面上的aes rc4 chacha 各种流加密都是假的
总结: 只有块加密
楼主太棒了,已经发现现代密码学体系中的Stream Cipher都是不存在的,建议公开发表paper提议改名
问题的根本是你懂的太少,还过度自信。遇到问题不去补基础知识解决,而是靠猜得出一个"某某都是假的"的结论
Stream Cipher的本质是生成一段近似无限且随机比特流,因此得名流密码,加解密都是拿它和数据做模二加。你说的什么玩意儿,什么叫定了界,数据都不完整还指望给你正确解密? 建议了解流密码中同步和自同步的概念,然后好好补密码学常识