您目前尚未登陆,请选择【登陆】或【注册
首页->会员交友->网博直销系统软件源码>>App-Code/des.cs>>源码在线查看
温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:网博直销系统软件源码
当前文件:文件类型 WangBoDirect/App_Code/des.cs打开代码结构图
普通视图
		            
1Using directives 8 9namespace Func //函数库 10{ 11 public class Func 12 { 13 14 //IP置换欢迎各位测试,并提出宝贵意见 15// 此软件的后继版本正紧张开发中,网博承诺此软件完全开放代源码,并供大家免费使用 16// 您可以在以下QQ群中得到免费的技术支持与学习机会 17// 群:3920122(网博资讯2)3742047(网博资讯3)8261396(网博资讯4)9884297(网博资讯5) 18// ------------------------------------------------------------------------------------------------- 19 20//业务联系: 21 22//QQ咨询405098219 100108980 23//联系电话:0898- 69208466 69206466 13518884166 13518800346 24//E-mail:webhww@126.com 25 public int[] IP(char[] mchar) 26 { 27 int[] mint = new int[64]; 28 int[] mreturn = new int[64]; 29 for (int i = 0; i < mint.Length; i++) 30 { 31 mint[i] = 0; 32 } 33 34 //将char明文转化为2进制明文 35 for (int i = 0; i < mchar.Length; i++) 36 { 37 if ((mchar[i] & 0x80) != 0) mint[i * 8 + 0] = 1; 38 if ((mchar[i] & 0x40) != 0) mint[i * 8 + 1] = 1; 39 if ((mchar[i] & 0x20) != 0) mint[i * 8 + 2] = 1; 40 if ((mchar[i] & 0x10) != 0) mint[i * 8 + 3] = 1; 41 if ((mchar[i] & 0x8) != 0) mint[i * 8 + 4] = 1; 42 if ((mchar[i] & 0x4) != 0) mint[i * 8 + 5] = 1; 43 if ((mchar[i] & 0x2) != 0) mint[i * 8 + 6] = 1; 44 if ((mchar[i] & 0x1) != 0) mint[i * 8 + 7] = 1; 45 } 46 47 //置换表 48 mreturn[0] = mint[57]; mreturn[1] = mint[49]; mreturn[2] = mint[41]; 49 mreturn[3] = mint[33]; mreturn[4] = mint[25]; mreturn[5] = mint[17]; 50 mreturn[6] = mint[9]; mreturn[7] = mint[1]; mreturn[8] = mint[59]; 51 mreturn[9] = mint[51]; mreturn[10] = mint[43]; mreturn[11] = mint[35]; 52 mreturn[12] = mint[27]; mreturn[13] = mint[19]; mreturn[14] = mint[11]; 53 mreturn[15] = mint[3]; mreturn[16] = mint[61]; mreturn[17] = mint[53]; 54 mreturn[18] = mint[45]; mreturn[19] = mint[37]; mreturn[20] = mint[29]; 55 mreturn[21] = mint[21]; mreturn[22] = mint[13]; mreturn[23] = mint[5]; 56 mreturn[24] = mint[63]; mreturn[25] = mint[55]; mreturn[26] = mint[47]; 57 mreturn[27] = mint[39]; mreturn[28] = mint[31]; mreturn[29] = mint[23]; 58 mreturn[30] = mint[15]; mreturn[31] = mint[7]; mreturn[32] = mint[56]; 59 mreturn[33] = mint[48]; mreturn[34] = mint[40]; mreturn[35] = mint[32]; 60 mreturn[36] = mint[24]; mreturn[37] = mint[16]; mreturn[38] = mint[8]; 61 mreturn[39] = mint[0]; mreturn[40] = mint[58]; mreturn[41] = mint[50]; 62 mreturn[42] = mint[42]; mreturn[43] = mint[34]; mreturn[44] = mint[26]; 63 mreturn[45] = mint[18]; mreturn[46] = mint[10]; mreturn[47] = mint[2]; 64 mreturn[48] = mint[60]; mreturn[49] = mint[52]; mreturn[50] = mint[44]; 65 mreturn[51] = mint[36]; mreturn[52] = mint[28]; mreturn[53] = mint[20]; 66 mreturn[54] = mint[12]; mreturn[55] = mint[4]; mreturn[56] = mint[62]; 67 mreturn[57] = mint[54]; mreturn[58] = mint[46]; mreturn[59] = mint[38]; 68 mreturn[60] = mint[30]; mreturn[61] = mint[22]; mreturn[62] = mint[14]; 69 mreturn[63] = mint[6]; 70 return mreturn; 71 } 72 //IP-1置换 73 public int[] IP_1(int[] mchar) 74 { 75 //置换表 76 int[] IPreturn = new int[64]; 77 IPreturn[0] = mchar[39]; 78 IPreturn[1] = mchar[7]; 79 IPreturn[2] = mchar[47]; 80 IPreturn[3] = mchar[15]; 81 IPreturn[4] = mchar[55]; 82 IPreturn[5] = mchar[23]; 83 IPreturn[6] = mchar[63]; 84 IPreturn[7] = mchar[31]; 85 IPreturn[8] = mchar[38]; 86 IPreturn[9] = mchar[6]; 87 IPreturn[10] = mchar[46]; 88 IPreturn[11] = mchar[14]; 89 IPreturn[12] = mchar[54]; 90 IPreturn[13] = mchar[22]; 91 IPreturn[14] = mchar[62]; 92 IPreturn[15] = mchar[30]; 93 IPreturn[16] = mchar[37]; 94 IPreturn[17] = mchar[5]; 95 IPreturn[18] = mchar[45]; 96 IPreturn[19] = mchar[13]; 97 IPreturn[20] = mchar[53]; 98 IPreturn[21] = mchar[21]; 99 IPreturn[22] = mchar[61]; 100 IPreturn[23] = mchar[29]; 101 IPreturn[24] = mchar[36]; 102 IPreturn[25] = mchar[4]; 103 IPreturn[26] = mchar[44]; 104 IPreturn[27] = mchar[12]; 105 IPreturn[28] = mchar[52]; 106 IPreturn[29] = mchar[20]; 107 IPreturn[30] = mchar[60]; 108 IPreturn[31] = mchar[28]; 109 IPreturn[32] = mchar[35]; 110 IPreturn[33] = mchar[3]; 111 IPreturn[34] = mchar[43]; 112 IPreturn[35] = mchar[11]; 113 IPreturn[36] = mchar[51]; 114 IPreturn[37] = mchar[19]; 115 IPreturn[38] = mchar[59]; 116 IPreturn[39] = mchar[27]; 117 IPreturn[40] = mchar[34]; 118 IPreturn[41] = mchar[2]; 119 IPreturn[42] = mchar[42]; 120 IPreturn[43] = mchar[10]; 121 IPreturn[44] = mchar[50]; 122 IPreturn[45] = mchar[18]; 123 IPreturn[46] = mchar[58]; 124 IPreturn[47] = mchar[26]; 125 IPreturn[48] = mchar[33]; 126 IPreturn[49] = mchar[1]; 127 IPreturn[50] = mchar[41]; 128 IPreturn[51] = mchar[9]; 129 IPreturn[52] = mchar[49]; 130 IPreturn[53] = mchar[17]; 131 IPreturn[54] = mchar[57]; 132 IPreturn[55] = mchar[25]; 133 IPreturn[56] = mchar[32]; 134 IPreturn[57] = mchar[0]; 135 IPreturn[58] = mchar[40]; 136 IPreturn[59] = mchar[8]; 137 IPreturn[60] = mchar[48]; 138 IPreturn[61] = mchar[16]; 139 IPreturn[62] = mchar[56]; 140 IPreturn[63] = mchar[24]; 141 return IPreturn; 142 } 143 //由64位原始密钥计算16个48位密钥 144 public int[][] makekey(char[] kchar) 145 { 146 //16位数组存放16个输出密钥 147 int[][] keyreturn = new int[16][]; 148 int[] temp = new int[64]; 149 int[] kint = new int[56]; 150 int[] c0 = new int[28]; int[] d0 = new int[28]; 151 int[] c16 = new int[28]; int[] d1 = new int[28]; 152 int[] c1 = new int[28]; int[] d2 = new int[28]; 153 int[] c2 = new int[28]; int[] d3 = new int[28]; 154 int[] c3 = new int[28]; int[] d4 = new int[28]; 155 int[] c4 = new int[28]; int[] d5 = new int[28]; 156 int[] c5 = new int[28]; int[] d6 = new int[28]; 157 int[] c6 = new int[28]; int[] d7 = new int[28]; 158 int[] c7 = new int[28]; int[] d8 = new int[28]; 159 int[] c8 = new int[28]; int[] d9 = new int[28]; 160 int[] c9 = new int[28]; int[] d10 = new int[28]; 161 int[] c10 = new int[28]; int[] d11 = new int[28]; 162 int[] c11 = new int[28]; int[] d12 = new int[28]; 163 int[] c12 = new int[28]; int[] d13 = new int[28]; 164 int[] c13 = new int[28]; int[] d14 = new int[28]; 165 int[] c14 = new int[28]; int[] d15 = new int[28]; 166 int[] c15 = new int[28]; int[] d16 = new int[28]; 167 int[] k1 = new int[48]; int[] k2 = new int[48]; int[] k3 = new int[48]; 168 int[] k4 = new int[48]; int[] k5 = new int[48]; int[] k6 = new int[48]; 169 int[] k7 = new int[48]; int[] k8 = new int[48]; int[] k9 = new int[48]; 170 int[] k10 = new int[48]; int[] k11 = new int[48]; int[] k12 = new int[48]; 171 int[] k13 = new int[48]; int[] k14 = new int[48]; int[] k15 = new int[48]; 172 int[] k16 = new int[48]; 173 174 //获得原始密钥2进制形式 175 for (int i = 0; i < kchar.Length; i++) 176 { 177 if ((kchar[i] & 0x80) != 0) temp[i * 8 + 0] = 1; 178 if ((kchar[i] & 0x40) != 0) temp[i * 8 + 1] = 1; 179 if ((kchar[i] & 0x20) != 0) temp[i * 8 + 2] = 1; 180 if ((kchar[i] & 0x10) != 0) temp[i * 8 + 3] = 1; 181 if ((kchar[i] & 0x8) != 0) temp[i * 8 + 4] = 1; 182 if ((kchar[i] & 0x4) != 0) temp[i * 8 + 5] = 1; 183 if ((kchar[i] & 0x2) != 0) temp[i * 8 + 6] = 1; 184 if ((kchar[i] & 0x1) != 0) temp[i * 8 + 7] = 1; 185 } 186 187 //去掉7。。15。。。。。63的奇校检位并打乱 188 kint[0] = temp[56]; 189 kint[1] = temp[48]; 190 kint[2] = temp[40]; 191 kint[3] = temp[32]; 192 kint[4] = temp[24]; 193 kint[5] = temp[16]; 194 kint[6] = temp[8]; 195 kint[7] = temp[0]; 196 kint[8] = temp[57]; 197 kint[9] = temp[49]; 198 kint[10] = temp[41]; 199 kint[11] = temp[33]; 200 kint[12] = temp[25]; 201 kint[13] = temp[17]; 202 kint[14] = temp[9]; 203 kint[15] = temp[1]; 204 kint[16] = temp[58]; 205 kint[17] = temp[50]; 206 kint[18] = temp[42]; 207 kint[19] = temp[34]; 208 kint[20] = temp[26]; 209 kint[21] = temp[18]; 210 kint[22] = temp[10]; 211 kint[23] = temp[2]; 212 kint[24] = temp[59]; 213 kint[25] = temp[51]; 214 kint[26] = temp[43]; 215 kint[27] = temp[35]; 216 kint[28] = temp[62]; 217 kint[29] = temp[54]; 218