在基本的des演算法
#include #include #include using namespace std;
//明文打亂表,64-64
int ip = ;
// 金鑰置換表,64-56
int k_1 = ;
// 壓縮置換,56-48
int k_2 = ;
// 每輪左移的位數
int shiftbits = ;
// f函式擴充套件置換表,32-48
int e = ;
// s盒替換 ,6-4
int sbox[8][4][16] = ,,,
}, ,,,
}, ,,,
}, ,,,
}, ,,,
}, ,,,
}, ,,,
}, ,,,
}};// p置換,32-32
int p = ;
// 結尾置換表
int ip_1 = ;
bitset<48> roundkey[16];
bitset<64> orikey;
bitset<28> keyshift(bitset<28> k, int shiftnum)
else
shiftk[i] = k[i - shiftnum + 28];
} return shiftk;
};bitset<32> f(bitset<32> rm, bitset<48> k)
rm48 = rm48 ^ k;
int s = 0;
for (int i = 0; i < 48; i += 6)
bitset<32> finalm = sboxm;
for (int i = 0; i < 32; i++)
return finalm;
};void key()
for (int round = 0; round < 16; round++)
for (int i = 0; i < 28; i++)
leftkey = keyshift(leftkey, shiftbits[round]);
rightkey = keyshift(rightkey, shiftbits[round]);
for (int i = 0; i < 28; i++)
for (int i = 0; i < 28; i++)
for (int i = 0; i < 48; i++)
roundkey[round] = key48;
}};bitset<64> chartobits(const char s[8])
;bitset<64> des(string m, string k)
for (int i = 0; i < 32; i++)
for (int i = 0; i < 16; i++)
for (int i = 0; i < 32; i++)
for (int i = 0; i < 32; i++)
currentbits = cipher;
for (int i = 0; i<64; ++i)
cipher[63 - i] = currentbits[64 - ip_1[i]];
return cipher;
};bitset<64> des1(bitset<64> c1, string k)
for (int i = 0; i < 32; i++)
for (int i = 15; i >= 0; i--)
for (int i = 0; i < 32; i++)
for (int i = 0; i < 32; i++)
currentbits = plain;
for (int i = 0; i<64; ++i)
plain[63 - i] = currentbits[64 - ip_1[i]];
return plain;
};void bittochar(bitset<64> b)
for (int i = 0; i < 8; i++)
};int main()
}
上進行 了輸入部分 的改進
DES演算法加密
public class des des演算法,加密 param data 待加密字串 param key 加密私鑰,長度不能夠小於8位 return 加密後的位元組陣列,一般結合base64編碼使用 throws cryptexception 異常 public static string enc...
DES演算法加密
des演算法程式設計與實現 des演算法是一種常用的對稱加密演算法,明文按64位進行分組,金鑰長64位,金鑰事實上56位參與了des運算 第8 16 24 32 40 48 56 64位是校驗位,使得每個金鑰都有奇數個1 分組後的明文組和56位的金鑰按位替代或交換的方法形成密文組的加密方法。des演...
簡單加密 DES演算法加密
背景 日前,由於公司乙個小專案需要加密,於是便學習 搜尋 了部分加密相關的知識,了解了一些常用加密演算法,包括常用的rsa演算法,和des演算法,突然發覺,過去幾十年年的學還是沒有白上的,學了那麼久的質數和分解,原來在加密領域是這樣強大.乾貨 1 不扯沒用的,分享乙個直接能用的加密演算法,就乙個cp...