本文描述一種專案中採用的簡單加密解密演算法,通過把多種演算法進行組合。特點是同個字串不同時間加密結果不同,混合了多種加密方式,很難用統計的方式對密文進行破解。
專案中僅是對密碼進行加密,規定密碼長度不超過16個字元,故以下的演算法均是固定長度的。
1)擴充套件字串
在加密字串末加"\0",之後新增隨機字串擴充套件為32個位元組。以系統時間為種子產生隨機字串,確保了同個字串不同時間加密的結果均不同。
2)字串移位
整個字串的二進位制位依次後移n*8+4位,此操作打亂了字串的統計特性。
int n=4;
int i;
char temp[n];
for(i=0;i>4)&0x0f);
3)單字元替換
本操作是把每個字元替換為另一字元,採用演算法是把字元的前後4位對調。
str[i]=((str[i]<<4)&0xf0)|((str[i]>>4)&0x0f);
4)加入金鑰進行異或,金鑰字串自定義
5)整個字串迴圈移位,原理同2)但操作單位為字元而不是二進位制位
以上2)~5)前後順序可調換,解密過程與加密過程相反。
若需對任意長字串加密,只需第16字元分別加密然後進行拼接即可。如果需要將密文轉換為可見字元進行傳輸,可對密文進行base64編碼。
源**
簡單的加密解密演算法
密碼演算法大致 str abcdefghijklmn 共94個可列印字元 key 2 0,2 1,2 2 2 5 到2 5 加密過程 明文,反轉,加密,密文 每個明文對應2個密文 解密過程 密文,解密,反轉,原文 每2個密文對應1個原文 偽碼 加密過程 str abcdefghijklmn 共94個...
簡單的加密解密演算法
本文描述一種專案中採用的簡單加密解密演算法,通過把多種演算法進行組合。特點是同個字串不同時間加密結果不同,混合了多種加密方式,很難用統計的方式對密文進行破解。專案中僅是對密碼進行加密,規定密碼長度不超過16個字元,故以下的演算法均是固定長度的。1 擴充套件字串 在加密字串末加 0 之後新增隨機字串擴...
加密,解密演算法
private symmetricalgorithm mcsp 宣告對稱演算法變數 private const string civ mi56 4zujhy12se6yjy111a 初始化向量 private const string ckey jkhuiy9d 9i 金鑰 常量 其中civ裡面的值...