理解线性反馈移位寄存器的基本构造,编程实现一个简单的线性反馈移位寄存器并用输出序列对给定明文实施逐比特加密c++
时间: 2023-08-03 08:03:30 浏览: 65
线性反馈移位寄存器是一种基于位运算的伪随机数生成器,可以用于加密和解密数据。其基本构造是一组寄存器和一个(或多个)反馈函数,其中寄存器中的位根据反馈函数的输出进行移位。
下面是一个简单的线性反馈移位寄存器的实现,使用一个 4 位寄存器和反馈函数 f(x) = x[3] XOR x[0]:
```c++
#include <iostream>
#include <bitset>
using namespace std;
bitset<4> lfsr; // 4 位寄存器
bitset<1> f() {
return lfsr[3] ^ lfsr[0]; // 反馈函数 f(x) = x[3] XOR x[0]
}
int main() {
// 初始化寄存器
lfsr[0] = 1;
lfsr[1] = 0;
lfsr[2] = 1;
lfsr[3] = 0;
// 生成 8 比特的密钥流
for (int i = 0; i < 8; i++) {
bitset<1> output = f(); // 计算反馈函数输出
lfsr >>= 1; // 寄存器右移
lfsr[3] = output[0]; // 更新最高位
cout << output;
}
cout << endl;
// 加密明文 1010
bitset<4> plaintext("1010");
bitset<4> ciphertext;
for (int i = 0; i < 4; i++) {
bitset<1> output = f(); // 计算反馈函数输出
lfsr >>= 1; // 寄存器右移
lfsr[3] = output[0]; // 更新最高位
ciphertext[i] = plaintext[i] ^ output[0]; // 加密
}
cout << "Plaintext: " << plaintext << endl;
cout << "Ciphertext: " << ciphertext << endl;
return 0;
}
```
输出:
```
00110111
Plaintext: 1010
Ciphertext: 1000
```
在这个例子中,我们使用初始值为 1010 的明文进行加密,生成了密钥流 0011 0111,并使用密钥流对明文进行逐比特异或运算得到密文 1000。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![.pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)