Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

DES encryption and decryption

2025-01-18 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Network Security >

Share

Shulou(Shulou.com)06/01 Report--

# include "memory.h" # include "stdio.h" # include "conio.h" enum {ENCRYPT,DECRYPT}; / / ENCRYPT: encryption, DECRYPT: decryption void Des_Run (char Out [8], char In [8], bool Type=ENCRYPT); void Des_SetKey (const char Key [8]); / / set key static void F_func (bool In [32], const bool Ki [48]); / / f function static void S_func (bool Out [32], const bool In [48]) / S boxes replace static void Transform (bool * Out, bool * In, const char * Table, int len); / / transform static void Xor (bool * InA, const bool * InB, int len); / / XOR static void RotateL (bool * In, int len, int loop); / / cycle left static void ByteToBit (bool * Out, const char * In, int bits); / / convert byte groups to bit groups static void BitToByte (char * Out, const bool * In, int bits) // 位组转换成字节组//置换IP表const static char IP_Table[64] = {58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4, 62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8, 57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3, 61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7};//逆置换IP-1表const static char IPR_Table[64] = {40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31, 38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29, 36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27, 34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25}; / / E-bit selection table (extended permutation table) static const char E_Table [48] = {32 pence 1, 2 pyrrors, 3 bees, 4 bees, 4 bees, 5 bees, 6 bees, 7 bees, 8 beers, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 10, 12, 12, 13, 14, 14, 14, 14, 14, 14, 16, 18, 19, 19, 19, 19, 19, 21, 21, 21, 24, 25, 24, 26, 26, 26, 27, 26, 27, 28, 28, 29, 29, 28, 29, 29, 29, 29, 29, 29, and 29, respectively. / P transposition table (simple transposition table) const static char P_Table [32] = {167remiere, 202pics, 21pics, 2929, 12271, 1526, 5, 18, and 10, 8pics, 181, 10, 2, 8, and 8, the other two, two, eight, and the other. / / PC1 selection table (key generation replacement table 1) const static char PC1_Table [56] = {57pyrus 49pyrus 41pyrrh 53pje 17pjor9 const static char PC2_Table (key generation replacement table 1) const static char PC1_Table [56] = {57pyrus 49pyrus 41pyrus 31pyrus 31pyrus 31pyrus 22,14authorer61pr 545pr 31pr 310pr 2pjr 22pr 2pjjjjjj213pr 213pr 52pr 2pr 2pr 2pr 22pr 5340g 540g 54g pr, g / PC2 [48] = {{1417111pr change table] / / / / left shift table const static char LOOP_Table [16] = {1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1. / / S box const static char S_Box [8] [4] [16] = {/ / S box const static char S_Box [8] [4] [16] = {/ / S1 14pyrus 4PME [8] [4] [16] = {/ / S box 14pyrus [8] [4] [16] = {/ / S _ 1 14PM [8] [4] [16] = {# # * * $$} 8 / S 1 14 14 pens [8] [4] [4] [16] = {/ / S 1 14 14, 11, 11, 11, 10, 10, 10, 11, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 12, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 5, 10, 5, 5, 5, 10, 5, 5, 5, 15, 12, 12, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, and, 15, 12, 12, 12, 12, 12, 12, 12, 12, 14, 14, 10, 10, 10, 10, 5, 10, 5, 5, 5, 10, 5, 5, 5, 5, 5, and, for example, 10, 5, 5, 5, 5, 10, 5, 5, 5, 5, 5, 8, 15, 12, 1, 4, 1, 4, 1, 4, 1, 4, 4, 8, 4, 1, 4, 8, 4 8,14,12,0,1,10,6,9,11,5, 0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15, 13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9, / / S3 10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8, 13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1, 13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7, 1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12, / / S4 7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15 13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9, 10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4, 3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14, / / S5 2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9, 14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6, 4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14, 11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3 / / S6 12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11, 10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8, 9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6, 4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13, / / S7 4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1, 13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6, 1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2 6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12, / / S8 13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7, 1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2, 7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8, 2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11} Static bool SubKey [16] [48]; / 16 Circle key void Des_Run (char Out [8], char In [8], bool Type) {static bool M [64], Tmp [32], * Li = & M [0], * Ri = & M [32]; ByteToBit (M, In, 64); / / byte group converted to bit group Transform (M, M, IP_Table, 64) / / transform if (Type = = ENCRYPT) {for (int iTuno; iMel -) {memcpy (Tmp, Li, 32); F_func (Li, SubKey [I]); Xor (Li, Ri, 32); / / XOR memcpy (Ri, Tmp, 32);}} Transform (M, M, IPR_Table, 64) / transform BitToByte (Out, M, 64);} void Des_SetKey (const char Key [8]) {static bool K [64], * KL = & K [0], * KR = & K [28]; ByteToBit (K, Key, 64); / / convert byte groups to byte Transform (K, K, PC1_Table, 56); / / transform for (int item0; I)

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Network Security

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report