feat: add new translate
This commit is contained in:
@@ -1 +1,51 @@
|
||||
# Challenge 18: Implement CTR, the stream cipher mode
|
||||
# 挑战18:实现CTR流密码模式
|
||||
|
||||
字符串:
|
||||
|
||||
```
|
||||
L77na/nrFsKvynd6HzOoG7GHTLXsTVu9qvY/2syLXzhPweyyMTJULu/6/kXX0KSvoOLSFQ==
|
||||
```
|
||||
|
||||
...在CTR模式下解密为近似英语的内容,CTR是一种将AES分组密码转换为流密码的AES分组密码模式,参数如下:
|
||||
|
||||
```
|
||||
key=YELLOW SUBMARINE
|
||||
nonce=0
|
||||
format=64位无符号小端nonce,
|
||||
64位小端块计数(字节计数 / 16)
|
||||
```
|
||||
|
||||
CTR模式非常简单。
|
||||
|
||||
CTR模式不是加密明文,而是加密运行计数器,产生16字节的密钥流块,与明文进行XOR。
|
||||
|
||||
例如,对于具有这些参数的消息的前16字节:
|
||||
|
||||
```
|
||||
keystream = AES("YELLOW SUBMARINE",
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")
|
||||
```
|
||||
|
||||
...对于下一个16字节:
|
||||
|
||||
```
|
||||
keystream = AES("YELLOW SUBMARINE",
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00")
|
||||
```
|
||||
|
||||
...然后:
|
||||
|
||||
```
|
||||
keystream = AES("YELLOW SUBMARINE",
|
||||
"\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00")
|
||||
```
|
||||
|
||||
CTR模式不需要填充;当你用完明文时,你只需停止XOR密钥流并停止生成密钥流。
|
||||
|
||||
解密与加密相同。生成相同的密钥流,XOR,并恢复明文。
|
||||
|
||||
解密此函数顶部的字符串,然后使用你的CTR函数来加密和解密其他东西。
|
||||
|
||||
## 这是好代码中唯一重要的分组密码模式
|
||||
|
||||
大多数现代密码学依靠CTR模式将分组密码适配为流密码,因为我们想要加密的大部分内容更好地描述为流而不是块序列。Daniel Bernstein曾经对Phil Rogaway开玩笑说,好的密码系统不需要"解密"变换。像CTR这样的构造就是他所说的。
|
||||
|
||||
Reference in New Issue
Block a user