一、vigenere加密解密原理
加密過程:步驟1.給26個字母a-z按順序進行編號0-25字母a
bcde
fghi
jklm
nopq
rstu
vwxy
z序號01
2345
6789
1011
1213
1415
1617
1819
2021
2223
2425
步驟2.找到明文對應的字母序號字母t
obeh
appy
序號19141
47015
1524
步驟3.找到金鑰對應的字母序號字母h
ello
序號7411
1114
步驟4.將明文序號和秘鑰序號相加再mod26,即可得到密文序號以及密文。
得到的結果有兩種情況:
設a屬於明文序號,b書屬於秘鑰序號,c屬於密文序號
若a+b<=25,則c=a+b
若a+b>=26, 則c=(a+b)%26
解密過程:步驟1.找到明文對應的字母序號字母t
obeh
appy
序號19141
47015
1524
步驟2.找到金鑰對應的字母序號字母h
ello
序號7411
1114
步驟3.用密文序號減去金鑰序號得到明文本母序號
兩種情況;設密文序號為c,金鑰序號為b.
若c>b,則a=c-b;
若c 完整c++**。
#include
using
namespace std;
const
int maxsize =
100;
//加密演算法
void
jiami
(char
* mingwen,
char
* miwen,
char
* password,
char
* table)
miwen[i]
= table[
(t + p)%26
];//查詢對應表中的字元}}
//解密演算法
void
jiemi
(char
*mingwen,
char
* miwen,
char
*password,
char
* table)
if(t < p)
t = t +26;
//超出26,返回時要加26
mingwen[i]
= table[t - p];}
}void
doit()
, password[maxsize]
=, miwen[maxsize]
=, mingwen[maxsize]=;
for(
int i =
0; i <
26; i++
)while(1
) cout << endl;
break;}
case2:
cout << endl;
break;}
case-1
:}}}
intmain()
#執行截圖參考:
Vigenere演算法加密和解密原理及其實現
可以根據乙個示例來解釋原理 秘鑰 hello 進行加密解密的過程 步驟1.給26個a z字母按順序1 26編號字母a bcde fghi jklm nopq rstu vwxy z序號12 3456 78910 1112 1314 1516 1718 1920 2122 2324 2526 步驟2....
加密與解密演算法
加密 public static string encode string data 解密 public static string decode string data catch descryptoserviceprovider cryptoprovider new descryptoservi...
C語言Vigenere加密
c語言vigenere加密 備註 1.基於迴圈陣列的通俗vigenere.預加密資料data為行索引 小寫 金鑰shelter為列索引 小寫 加密後輸出code 大寫 2.僅加密。3.注釋部分為檢驗用途。4.初步接觸程式設計和本站,文字瑕疵處請見諒。5.歡迎。include include intm...