Vigenere演算法加密和解密原理及其實現

2021-09-19 05:14:14 字數 1391 閱讀 2999

可以根據乙個示例來解釋原理

秘鑰: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.找到明文對應的字母序號字母t

obeh

appy

序號20152

58116

1625

步驟3找到秘鑰對應的字母序號字母h

ello

序號8512

1215

步驟4 將明文序號和秘鑰序號相加,得到密文序號以及密文。

得到的結果有兩種情況:

設a屬於明文序號,b書屬於秘鑰序號,c屬於密文序號

若a+b<=25則c=a+b

若a+b>25  則c=a+b-26

比如t的序號20和h的序號8相加等於28>25,則對應密文為28-26=2

注:明文有9個字母,秘鑰有5個字母,當明文前5個字母的序列和秘鑰的序列相加後,第6個字母的序號和秘鑰的第1個字母序號相加,重複使用秘鑰的序號

因此得到密文序號

明文序號

201525

811616

25秘鑰序號85

1212158

51212相加220

1417239

21211根據密文序號得到密文:序號2

2014

1723921

211字母b

tnqw

iubk

#includeusing namespace std;

class vigenere

void encrypt(char *plaintext)

void decrypt(char *plaintext)

private:

//static int lengthofkey;//j為秘鑰的長度

int j;

int numciphertext[100];

char ciphertext[100];

void initkey(char *key)

}void transplaintocipher(char *plaintext ) //密文生成秘鑰

else if(options==2)

else if(options==3)

else{

cout<<"input error,please try again"<**參考

vigenere加密與解密演算法

一 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.找到明文對應的字母序...

加密和解密

public class desc public static string decode string data catch descryptoserviceprovider cryptoprovider new descryptoserviceprovider memorystream ms n...

加密和解密

公鑰密碼體制的核心思想是 加密和解密採用不同的金鑰。這是公鑰密碼體制和傳統對稱密碼體制的最大區別。對於傳統對稱密碼而言,密文的安全性完全依賴於金鑰的保密性,一旦金鑰洩露,將毫無保密性可言。但是公鑰密碼體制徹底改變了這樣狀況,在公鑰密碼體制中,公鑰是公開的,只有私鑰是保密的,知道公鑰和密碼演算法要推測...