- 52
- 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 前面两个还是可以解出明文
这种情况也属于流加密?
这不是块加密吗 这将明文定了界,要数据块完整才能正确解密啊
- 共 0 条
- 全部回答
-
╭初夏ぃ染指忧伤つ 普通会员 1楼
Chacha20是一种基于Caesar cipher的密钥分发算法,它的加密和解密过程如下:
-
加密:将明文向量a通过一个随机的Caesar cipher向量c生成密文c'。每个字符都会向后移动固定数量的位数,其中向上移动的位数对应于字母表中的字母,向下的移动的位数对应于字母表中的字母的逆序。
-
解密:将密文c'通过同样的随机Caesar cipher向量c生成明文a。每个字符都会向前移动固定数量的位数,其中向上移动的位数对应于字母表中的字母,向下的移动的位数对应于字母表中的字母的逆序。
以下是一个简单的Python代码示例,用于演示如何使用Chacha20进行加密和解密:
```python import base64 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpad from Crypto.Random import get_random_bytes
定义Caesar cipher的密钥长度
key_length = 20
加密
def encrypt(text, key): cipher = AES.new(key, AES.MODE_chacha20, padding=True) return cipher.encrypt(pad(text.encode(), key_length))
解密
def decrypt(cipher, key): cipher = AES.new(key, AES.MODE_chacha20, padding=True) return unpad(cipher.decrypt(cipher.iv), key_length)
测试
text = "Hello, world!" key = get_random_bytes(key_length) encrypted = encrypt(text, key) print("Encrypted text:", encrypted)
decrypted = decrypt(encrypted, key) print("Decrypted text:", decrypted) ```
注意:这个示例使用了Python的
Crypto库。你需要先安装这个库,可以使用pip install python-cryptography命令进行安装。 -
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
