DES加密算法笔记
来源:互联网 发布:stata 面板数据回归 编辑:程序博客网 时间:2024/05/02 04:42
1、文件的按位读取
对文件进行二进制的读写操作:
ifstream itxt(de_plaintext, ios::binary);
ofstream out(de_ciphertext, ios::binary);
从文件里面每次读取一个字节的数据,并将这个数据强制转换成一个8位的bitset类型,而此时的ch_8已经存储了char_temp所对应的二进制数据,每位二进制数据用unsigned int进行存储。每位数据可以用ch_8[i]来读取,用ch_8.set(i)来进行写入。之后程序里面所存取运算的数据都是由bitset来进行处理的。
itxt.read(&char_temp,1)
ch_8 = bitset<8> (char_temp);
可以用下面方法实现对文件的二进制数据的写入,而一般 sizeof(ch)都是4个字节,所以一次至少要用32位的bitset数据向文件进行写入,不足32就会填充0,所以在文件就会出现空格显示的数据。
out.write((char*)&ch, sizeof(ch));
2、一维S盒子的位操作//分别获取4字节的int型数据的24位,即可以表示16777216个数据
a6 = (unsigned char)(i&0x0000003f);
b6 = (unsigned char)((i&0x00000fc0) >> 6);
c6 = (unsigned char)((i&0x0003f000) >> 12);
d6 = (unsigned char)((i&0x00fc0000) >> 18);
//从S盒子中取值
//s1
unsigned char t = (a6>>4 & 0x02 + a6&0x01)&0x03;
x = ((a6>>4 & 0x02) + (a6&0x01))&0x03;
y = (a6>>1)&0x0f;
a4 = S_BOX[3][x][y];
输入的是bitset<48> inArray类型的48位二进制数据。主要的步骤就是进行位操作将这48位的二进制变换成int型的数据s1,s2。然后我们就可以直接进SBox_1查第s1位的short型(2字节)数据。在用bitset<16>将其直接转码为二进制,分左右输入到outArray中,这样就进行了S转换。
bitset<32> outArray;
int s1,s2;
s1 = s2 = 0;
int s3,s4;
int t = 0;
int i;
for (i = 0;i < 24;i++)
{
s1 |= (t|inArray[47-i])<<(23-i);
}
for (i = 24;i < 48;i++)
{
s2 |= (t|inArray[47-i])<<(47-i);
}
s3 = sBox_1[s1];
s4 = sBox_2[s2];
bitset<16> s_l,s_r;
s_l = bitset<16>(s3);
s_r = bitset<16>(s4);
for (int i=0;i<16;i++)
{
if(s_l[i]==1){
outArray.set(i+16);
}
}
for (int i=0;i<16;i++)
{
if(s_r[i]==1){
outArray.set(i);
}
}
3、MFC的一些操作3.1创建控件
3.2添加空间参数
3.3控件与后台的数据传递
UpdateData(TRUE);//将控件中的变量传到后台变量
UpdateData(false);//将后台的变量传到控件中
3.4提示框
if( key == "")
{
MessageBox("请输入密钥!!!","提示");
return;
}
要是用unicode会出错,项目右键属性--配置属性--常规--字符集 进行修改
- DES加密算法笔记
- DES加密算法学习笔记
- DES加密算法
- DES加密算法
- DES 加密算法
- DES加密算法
- DES加密算法
- DES 加密算法
- DES 加密算法
- DES加密算法
- DES加密算法
- DES加密算法
- DES加密算法
- DES加密算法
- DES加密算法
- DES加密算法
- DES加密算法
- des加密算法
- 【数据结构课程设计】信管1133何景涛201311671308
- 网络协议栈和tcpdump抓包练习
- c++学生管理系统(STL)
- 子子撰足椎撞踪壮专拽尊拽醉尊桌状作庄
- 宗走装足锥渍纵注拙足撞揍纵综嘴醉追锥
- DES加密算法笔记
- 黑马程序员——Java之面向对象
- 砖资踪祖拽尊孜昨宗子踪拙状孜座昨组驻
- 捉综锥装柞罪仔宗族柞座自谆棕卓棕撰仔
- 住滋阻驻兹阻妆砖嘴撰做做撰座姿状谞渍
- 滓遵综咨滓奏专阻族籽酌钻谆浊姿咨醉子
- oc中时间戳的应用
- RPAD函数略解
- linux磁盘管理