在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
DES加密算法并不难,是由一些简单的变换得来的,难的是要有足够的耐心。蒟蒻并不想说自己用了多久才把代码写好的。
我真的太难了QAQ 1 #include<iostream> 2 using namespace std; 3 4 5 6 int jiami(){ 7 8 // 明文 9 int mingwen[64]; 10 11 12 cout<<"请输入16位十六进制的明文:"; 13 string kk; 14 cin>>kk; 15 int len=kk.length(); 16 17 18 while(len!=16){ 19 cout<<"请重新输入16位十六进制的明文:"; 20 cin>>kk; 21 len=kk.length(); 22 } 23 24 int jishu=0; 25 for(int i=0;i<16;i++){ 26 int a; 27 if(kk[i]>='0'&&kk[i]<='9') 28 a=kk[i]-'0'; 29 else 30 a=kk[i]-'A'+10; 31 32 int n[4]={0}; 33 int f=0; 34 while(a){ 35 n[f]=a%2; 36 a=a/2; 37 f++; 38 } 39 mingwen[jishu*4]=n[3]; 40 mingwen[jishu*4+1]=n[2]; 41 mingwen[jishu*4+2]=n[1]; 42 mingwen[jishu*4+3]=n[0]; 43 jishu++; 44 } 45 46 47 48 //初始置换IP 49 int IP[64]={58, 50, 42, 34, 26, 18, 10, 2, 50 60, 52, 44, 36, 28, 20, 12, 4, 51 62, 54, 46, 38, 30, 22, 14, 6, 52 64, 56, 48, 40, 32, 24, 16, 8, 53 57, 49, 41, 33, 25, 17, 9, 1, 54 59, 51, 43, 35, 27, 19, 11, 3, 55 61, 53, 45, 37, 29, 21, 13, 5, 56 63, 55, 47, 39, 31, 23, 15, 7}; 57 58 59 60 61 62 // 选择运算E 32位明文扩充为48位 63 int E[48]={ 32, 1, 2, 3, 4, 5, 64 4, 5, 6, 7, 8, 9, 65 8, 9, 10, 11, 12, 13, 66 12, 13, 14, 15, 16, 17, 67 16, 17, 18, 19, 20, 21, 68 20, 21, 22, 23, 24, 25, 69 24, 25, 26, 27, 28, 29, 70 28, 29, 30, 31, 32, 1 }; 71 72 73 //64位秘钥 0123456789ABCDEF 56位的秘钥+8位校验码 74 int miyao[64]; 75 cout<<"请输入16位十六进制的秘钥:"; 76 string k_2; 77 cin>>k_2; 78 int len_2=k_2.length(); 79 80 81 while(len_2!=16){ 82 cout<<"请重新输入16位十六进制的秘钥:"; 83 cin>>k_2; 84 len_2=k_2.length(); 85 } 86 87 int jishu_2=0; 88 for(int i=0;i<16;i++){ 89 int a; 90 if(k_2[i]>='0'&&k_2[i]<='9') 91 a=k_2[i]-'0'; 92 else 93 a=k_2[i]-'A'+10; 94 95 int n[4]={0}; 96 int f=0; 97 while(a){ 98 n[f]=a%2; 99 a=a/2; 100 f++; 101 } 102 miyao[jishu_2*4]=n[3]; 103 miyao[jishu_2*4+1]=n[2]; 104 miyao[jishu_2*4+2]=n[1]; 105 miyao[jishu_2*4+3]=n[0]; 106 jishu_2++; 107 } 108 109 110 //置换选择1 111 int IP_1[56]={57, 49, 41, 33, 25, 17, 9, 112 1, 58, 50, 42, 34, 26, 18, 113 10, 2, 59, 51, 43, 35, 27, 114 19, 11, 3, 60, 52, 44, 36, 115 63, 55, 47, 39, 31, 23, 15, 116 7, 62, 54, 46, 38, 30, 22, 117 14, 6, 61, 53, 45, 37, 29, 118 21, 13, 5, 28, 20, 12, 4}; 119 120 121 122 //16次左移对应的位数 123 int weiyi[16]={1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1}; 124 // 置换选择2 秘钥56->48位压缩 125 int IP_2[48]={14, 17, 11, 24, 1, 5, 126 3, 28, 15, 6, 21, 10, 127 23, 19, 12, 4, 26, 8, 128 16, 7, 27, 20, 13, 2, 129 41, 52, 31, 37, 47, 55, 130 30, 40, 51, 45, 33, 48, 131 44, 49, 39, 56, 34, 53, 132 46, 42, 50, 36, 29, 32}; 133 134 //S盒 135 136 int s[8][65]= 137 { 138 { 139 14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7, 140 0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8, 141 4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0, 142 15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13 143 }, 144 { 145 15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10, 146 3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5, 147 0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15, 148 13,8,10,1,3,15,4,2,11,6,7,12,10,5,14,9 149 }, 150 { 151 10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8, 152 13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1, 153 13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7, 154 1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12 155 }, 156 { 157 7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15, 158 13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9, 159 10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4, 160 3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14 161 }, 162 { 163 2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9, 164 14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6, 165 4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14, 166 11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3 167 }, 168 { 169 12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11, 170 10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8, 171 9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6, 172 4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13 173 }, 174 { 175 4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1, 176 13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6, 177 1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2, 178 6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12 179 }, 180 { 181 13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7, 182 1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2, 183 7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8, 184 2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11 185 } 186 }; 187 188 189 //P置换 190 int P[32]={16, 7, 20, 21, 29, 全部评论
专题导读
上一篇:Canny算子c++发布时间:2022-07-13下一篇:c#+winform技巧三,c#,winform,show,showdialog,子窗体,父窗体,传值,输入正确 ...发布时间:2022-07-13热门推荐
热门话题
阅读排行榜
|
请发表评论