数据加密标准(Data Encryption Standard,DES)是在美国IBM公司的研究人员Horst Feistel 和Walter Tuchman于20世纪70年代中期提出的一个密码算法(LUCIFER算法(金星算法))的基础之上发展而来的,并于1977年1月15日由美国国家标准局(NBS)正式公布实施,是第一公开的商用密码标准,并得到了ISO的认可。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 37376 2018-04-23 17:27 DES_test.vsDES_testv15.suo
文件 5713920 2018-04-23 17:27 DES_test.vsDES_testv15Browse.VC.db
文件 27721728 2018-04-23 16:37 DES_test.vsDES_testv15ipchAutoPCHe86faee2d28fcf7eUSER.ipch
文件 26607616 2018-04-20 23:08 DES_test.vsDES_testv15ipchAutoPCHf2f923de80fa59dDES.ipch
I.A.... 145920 2018-04-23 17:11 DES_testDebugDES_test.exe
I.A.... 628732 2018-04-23 17:11 DES_testDebugDES_test.ilk
I.A.... 1077248 2018-04-23 17:18 DES_testDebugDES_test.pdb
I.A.... 150044 2018-04-10 18:17 DES_testDES_testDebugDES.obj
I.A.... 94 2018-04-23 17:11 DES_testDES_testDebugDES_test.log
I.A.... 1274 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogCL.command.1.tlog
I.A.... 37854 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogCL.read.1.tlog
I.A.... 1698 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogCL.write.1.tlog
I.A.... 212 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogDES_test.lastbuildstate
I.A.... 1288 2018-04-23 17:11 DES_testDES_testDebugDES_test.tloglink.command.1.tlog
I.A.... 4104 2018-04-23 17:11 DES_testDES_testDebugDES_test.tloglink.read.1.tlog
I.A.... 590 2018-04-23 17:11 DES_testDES_testDebugDES_test.tloglink.write.1.tlog
I.A.... 254890 2018-04-23 17:11 DES_testDES_testDebuguser.obj
I.A.... 478208 2018-04-23 17:11 DES_testDES_testDebugvc141.idb
I.A.... 495616 2018-04-23 17:11 DES_testDES_testDebugvc141.pdb
I.A.... 4917 2018-04-10 18:17 DES_testDES_testDES.cpp
I.A.... 4181 2018-04-10 18:15 DES_testDES_testDES.h
I.A.... 6048 2018-04-08 20:20 DES_testDES_testDES_test.vcxproj
I.A.... 1148 2018-04-08 20:20 DES_testDES_testDES_test.vcxproj.filters
I.A.... 1617 2018-04-23 17:09 DES_testDES_testuser.cpp
I.A.... 1438 2018-04-08 18:45 DES_testDES_test.sln
目录 0 2019-05-09 10:56 DES_test.vsDES_testv15ipchAutoPCHe86faee2d28fcf7e
目录 0 2019-05-09 10:56 DES_test.vsDES_testv15ipchAutoPCHf2f923de80fa59d
目录 0 2019-05-09 10:56 DES_test.vsDES_testv15ipchAutoPCH
目录 0 2019-05-09 10:56 DES_test.vsDES_testv15ipch
目录 0 2019-05-09 10:56 DES_test.vsDES_testv15
............此处省略10个文件信息
#include “DES.h“
#include
using namespace std;
DES::DES()
{
}
DES::~DES()
{
}
bitset<32> DES::F(bitset<32> R bitset<48> k) {
//E盒扩展
bitset<48> expandR;
for (int i = 0; i < 48; i++)
expandR[47 - i] = R[32 - E[i]]; //expandR[i] = R[E[i] - 1];
//异或
expandR = expandR ^ k;
//S盒代替
bitset<32> output;
int x = 0;
for (int i = 0; i < 48; i = i + 6)
{
int row = expandR[i] * 2 + expandR[i + 5];
int col = expandR[i + 1] * 8 + expandR[i + 2] * 4 + expandR[i + 3] * 2 + expandR[i + 4];
int num = S_BOX[i / 6][row][col];
bitset<4> temp(num);
output[x + 3] = temp[0];
output[x + 2] = temp[1];
output[x + 1] = temp[2];
output[x] = temp[3];
x += 4;
}
//P盒置换
bitset<32> tmp = output;
for (int i = 0; i < 32; i++)
output[i] = tmp[P[i] - 1];
return output;
}
//左移函数
bitset<28> DES::leftshift(bitset<28> k int shift) {
bitset<28> temp = k;
if (shift == 1)
{
for (int i = 0; i < 27; i++)
{
if (i - shift < 0)
k[i - shift + 28] = temp[i];
else
k[i] = temp[i + shift];
}
}
if (shift == 2)
{
for (int i = 0; i < 26; i++)
{
if (i - shift < 0)
k[i - shift + 28] = temp[i];
else
k[i] = temp[i + shift];
}
}
return k;
}
void DES::generateKeys() {
bitset<56> real_key;
bitset<28> left;
bitset<28> right;
bitset<48> compressKey;
//首先经过选择置换PC-1,将初始密钥的8bit奇偶校验位去掉
//并重新编排
for (int i = 0; i < 56; i++)
real_key[i] = key[PC_1[i] - 1];
for (int round = 0; round < 16; round++)
{
for (int i = 0; i < 28; i++)
left[i] = real_key[i];
for (int i = 28; i < 56; i++)
right[i - 28] = real_key[i];
//左移
left = leftshift(left shiftBits[round]);
right = leftshift(right shiftBits[round]);
//连接,置换选择PC-2做重排,进行压缩
for (int i=0; i < 28; i++)
real_key[i] = left[i];
for (int i = 28; i < 56; i++)
real_key[i] = right[i - 28];
for (int i = 0; i < 48; i++)
{
int m = PC_2[i];
compressKey[i] = real_key[m - 1];//i=39 时就报错。。。。。
} //。。。数组越界,应-1.。。
/*compressKey[i] = real_key[PC_2[i]];*/
//wrong!!!
subkey[round] = compressKey;
}
}
// 工具函数:将char字符数组转为二进制
bitset<64> DES::char_to_bit(const char s[8]) {
bitset<64> bits;
int x = 0;
for (int i = 0; i < 8; i++)
{
int num = int(s[i]);
bitset<8> temp(num);
for (int j = 7; j >= 0; j--)
{
bits[x + j] = temp[7 - j];
}
x += 8;
}
/*for (int i = 0; i<8; ++i)
for (int j = 0; j<8; ++j)
bits[i * 8 + j] = ((s[i] >> j) & 1);
*/
return bits;
}
//工具函数:进行二进制逆向转换
bitset<64> DES::change(bitset<64> temp) {
bitset<64> bits;
bitset<8> n;
int x;
for (int i = 0; i < 64; i = i + 8)
{
for (int j = 0; j < 8; j++)
{
bits[i + j] = temp[i + 7 - j];
}
}
return bits;
}
/*char * DES::bit_to_char(const bitset<64> test) {
int count = 0;
int temp;
char now[8];
for (int i = 0; i < 64; i = i + 8)
{
temp = 0;
for (int j = 0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
..A..H. 37376 2018-04-23 17:27 DES_test.vsDES_testv15.suo
文件 5713920 2018-04-23 17:27 DES_test.vsDES_testv15Browse.VC.db
文件 27721728 2018-04-23 16:37 DES_test.vsDES_testv15ipchAutoPCHe86faee2d28fcf7eUSER.ipch
文件 26607616 2018-04-20 23:08 DES_test.vsDES_testv15ipchAutoPCHf2f923de80fa59dDES.ipch
I.A.... 145920 2018-04-23 17:11 DES_testDebugDES_test.exe
I.A.... 628732 2018-04-23 17:11 DES_testDebugDES_test.ilk
I.A.... 1077248 2018-04-23 17:18 DES_testDebugDES_test.pdb
I.A.... 150044 2018-04-10 18:17 DES_testDES_testDebugDES.obj
I.A.... 94 2018-04-23 17:11 DES_testDES_testDebugDES_test.log
I.A.... 1274 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogCL.command.1.tlog
I.A.... 37854 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogCL.read.1.tlog
I.A.... 1698 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogCL.write.1.tlog
I.A.... 212 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogDES_test.lastbuildstate
I.A.... 1288 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogli
I.A.... 4104 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogli
I.A.... 590 2018-04-23 17:11 DES_testDES_testDebugDES_test.tlogli
I.A.... 254890 2018-04-23 17:11 DES_testDES_testDebuguser.obj
I.A.... 478208 2018-04-23 17:11 DES_testDES_testDebugvc141.idb
I.A.... 495616 2018-04-23 17:11 DES_testDES_testDebugvc141.pdb
I.A.... 4917 2018-04-10 18:17 DES_testDES_testDES.cpp
I.A.... 4181 2018-04-10 18:15 DES_testDES_testDES.h
I.A.... 6048 2018-04-08 20:20 DES_testDES_testDES_test.vcxproj
I.A.... 1148 2018-04-08 20:20 DES_testDES_testDES_test.vcxproj.filters
I.A.... 1617 2018-04-23 17:09 DES_testDES_testuser.cpp
I.A.... 1438 2018-04-08 18:45 DES_testDES_test.sln
目录 0 2019-05-09 10:56 DES_test.vsDES_testv15ipchAutoPCHe86faee2d28fcf7e
目录 0 2019-05-09 10:56 DES_test.vsDES_testv15ipchAutoPCHf2f923de80fa59d
目录 0 2019-05-09 10:56 DES_test.vsDES_testv15ipchAutoPCH
目录 0 2019-05-09 10:56 DES_test.vsDES_testv15ipch
目录 0 2019-05-09 10:56 DES_test.vsDES_testv15
............此处省略10个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)