簡單的加密解密演算法

2021-07-04 18:16:06 字數 788 閱讀 2268

本文描述一種專案中採用的簡單加密解密演算法,通過把多種演算法進行組合。特點是同個字串不同時間加密結果不同,混合了多種加密方式,很難用統計的方式對密文進行破解。

專案中僅是對密碼進行加密,規定密碼長度不超過16個字元,故以下的演算法均是固定長度的。

1)擴充套件字串

在加密字串末加"\0",之後新增隨機字串擴充套件為32個位元組。以系統時間為種子產生隨機字串,確保了同個字串不同時間加密的結果均不同。

2)字串移位

整個字串的二進位制位依次後移n*8+4位,此操作打亂了字串的統計特性。

[cpp]view plain

copy

intn=4;  

inti;  

char

temp[n];  

for(i=0;i

for(i=0;i>4)&0x0f);  

3)單字元替換

本操作是把每個字元替換為另一字元,採用演算法是把字元的前後4位對調。

[cpp]view plain

copy

str[i]=((str[i]<<4)&0xf0)|((str[i]>>4)&0x0f);  

4)加入金鑰進行異或,金鑰字串自定義

5)整個字串迴圈移位,原理同2)但操作單位為字元而不是二進位制位

以上2)~5)前後順序可調換,解密過程與加密過程相反。

若需對任意長字串加密,只需第16字元分別加密然後進行拼接即可。如果需要將密文轉換為可見字元進行傳輸,可對密文進行base64編碼。

簡單的加密解密演算法

本文描述一種專案中採用的簡單加密解密演算法,通過把多種演算法進行組合。特點是同個字串不同時間加密結果不同,混合了多種加密方式,很難用統計的方式對密文進行破解。專案中僅是對密碼進行加密,規定密碼長度不超過16個字元,故以下的演算法均是固定長度的。1 擴充套件字串 在加密字串末加 0 之後新增隨機字串擴...

簡單的加密解密演算法

密碼演算法大致 str abcdefghijklmn 共94個可列印字元 key 2 0,2 1,2 2 2 5 到2 5 加密過程 明文,反轉,加密,密文 每個明文對應2個密文 解密過程 密文,解密,反轉,原文 每2個密文對應1個原文 偽碼 加密過程 str abcdefghijklmn 共94個...

加密,解密演算法

private symmetricalgorithm mcsp 宣告對稱演算法變數 private const string civ mi56 4zujhy12se6yjy111a 初始化向量 private const string ckey jkhuiy9d 9i 金鑰 常量 其中civ裡面的值...