|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
class cDESUtils
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
cDESUtils(void);
|
|
|
|
|
~cDESUtils(void);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64λ->64λ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>64Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ<EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string final_permutation(string s);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*P<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32λ->32λ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sΪS<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string P_box(string s);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*S<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 48λ->32λ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sΪ48λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ32λ
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string S_box(string s);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㺯<EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*Ҫ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string XOR(string s1,string s2);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 32->48
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sΪ<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD>Ұ벿<EFBFBD><EFBFBD> 32λ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD>48λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string plaintext_righthalf_extended_permutation(string s);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD>Կѹ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 56λ->48λ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sΪ56Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ48λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string secret_key_compression_replacement(string s);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD>Կѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD> 56λ->56λ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>kΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD> sΪ<EFBFBD><EFBFBD>Կ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵλ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string secret_ket_left_move(int k,string s);//<2F><>Կѭ<D4BF><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>kλ
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD>ʼ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64λ->58λ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sΪ64λ<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><EFBFBD>Կ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ58λ
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string secret_key_initial_permutation(string s);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64λ->64λ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sΪ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 64λ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ6λ
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string plaintext_initial_permutation(string s);//<2F><><EFBFBD>ij<EFBFBD>ʼ<EFBFBD>û<EFBFBD>
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>f
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>32λ<EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD>48λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>32λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*str1:32λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> str2:48λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ32λ
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
string foldFunc(string str1,string str2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string Keys[20];
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*16<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת2<EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sΪ16<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string H(string s);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת16<EFBFBD><EFBFBD><EFBFBD>ƺ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*strΪ2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ16<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string G(string str);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>sΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>16<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Կ
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
void generateKeys(string s);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*DES<EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD><EFBFBD><EFBFBD> 64λ->64λ
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>str1Ϊ64λ<EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ64λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string encrypt(string str1);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD>ܺ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*strΪ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
string decrypt(string str);
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|