vigenere加密與解密演算法

2021-10-11 08:29:59 字數 1986 閱讀 9254

一、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...