1)利用C\C++语言实现给定的LFSR;
2)通过不同初始状态生成相应的序列,并观察它们的周期有什么特点;
3)利用生成的序列对文本进行加/解密(按对应位作模2加运算)。
步骤:
(1)生成序列:使用#include库构造序列,使用bint.to_string()将输入的01串转成字符串,用str暂存。将bint[3]和bint[0]异或,赋值给bint[4]也就是a5,循环左移,将bint转成字符串后s1[4]就是生成的a1,将 a1添加到s2后面。当str与现在的bint相同,即周期结束,跳出循环,s2就是生成的完整序列。
(2)加密过程:生成31位序列后,读取待加密文本的每一个字符,和0XFF相与得到8位01串,依次与31位序列按位异或,结果得到8位01串,得到密文,写入ciphertext.txt。
(3)解密过程:每次读入ciphertext.txt中的8个01字符,将其再依次与31位序列按位异或,得到加密前的01串,根据这个01字符串,先转成bitset类型,再转成char型,将每个字母写入解密文件deciphertext.txt,解密结束。
1