资源简介
自己根据密码课本上写的,供大家参考,要是哪里写得不对的话麻烦大家指正,O(∩_∩)O谢谢
代码片段和文件信息
#include
#include
#include
using namespace std;
unsigned char k[8]temptable[30000]plaintable[30000]nowtable[30000]sonkey[30000] ; int plainlengthklength;
int ktable[256]stable[256];
class rc4
{
public:
static unsigned char xor(unsigned char aunsigned char b); //加解密的时候进行异或运算,注意要转换成unsigned char类型,否则异或会出现大于255的现象
static void swap( int *a int *b); //两个数进行交换操作
static void KSA(); //密钥调度
static void PRGA(); //伪随机生成
void cryption(); //加密
void decryption(); //解密
void dtoh(unsigned char a); //转换成16进制输出
rc4() {}; //构造函数
};
unsigned char rc4::xor(unsigned char aunsigned char b)
{
return a^b;
}
void rc4::swap( int *a int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void rc4::KSA()
{
int ij=0;
for(i=0;i<256;i++)
{
j=(j+stable[i]+( int)ktable[i])%256;
swap(&stable[i]&stable[j]);
}
cout< cout<<“************************“< cout<<“Output Key“< for(i=0;i<256;i++)
cout< cout<
}
void rc4::PRGA()
{
int m=0i=0j=0tl;l=plainlength;
while(l--) //密钥长度要和明文长度一致
{
i=(i+1)%256;
j=(j+stable[i])%256;
swap(&stable[i]&stable[j]);
t=(stable[j]+stable[i])%256;
sonkey[m++]=stable[t]; //将子密钥存放在sonkey数组中
}
}
void rc4::cryption()
{
KSA();
PRGA();
- 上一篇:C++实现的BP神经网络算法实现奇偶检验运算
- 下一篇:AES s盒生成代码
评论
共有 条评论