維吉尼亞加密演算法

2021-10-05 01:24:16 字數 1712 閱讀 5819

這個演算法思想就是:當我們隨機輸入的要加密的一串明文,隨機生成乙個key,然後將對應的明文移動key位。最後得到加密後的密文。例如「hello」,隨機生成key架設是『2』,『3』,『4』,『-1』,『0』。那麼得到的密文就是「jhpko」。這裡的key可正可負。本程式通過srand()和time()函式來生成偽隨機數模擬key。**如下:

#include

#include

#include

#include

#define error 0

#define ok 1

typedef

char elemtype;

typedef

int status;

int length =0;

status i =0;

elemtype ch=0;

typedef

struct node

node;

//定義乙個雙鏈表

status initialdlist

(node *head,

int length)

//初始化迴圈雙鏈表

q->data =

'a'+ i;

//此鍊錶包含26個大寫英文本母

q->next = p->next;

q->pre = p;

p->next = q;

p = q;

} p->next = head->next;

head->next->pre = p;

return ok;

}elemtype paixu

(node *

*head,

int i, elemtype ch)

if(i>0)

//如果是正向移位

}else

}return

(*head)

->data;

//返回加密後的資料

}void

print

(node *head,

int length)

//乙個列印函式

}void

vigenere

(char

*str1,

int i,

char

*str2,

int*key,node *head)

//對於str1進行維吉尼亞加密

}int

main

(void);

//明文

char str2[

100]=;

int key[

100]=;

node *head =

(node *

)malloc

(sizeof

(node));

length =26;

i=initialdlist

(head,length)

;//初始化26個字母的迴圈雙鏈表

if(i== error)

else

vigenere

(str1,

strlen

(str1)

,str2,key,head)

;//維吉尼亞加密

printf

("%s\n"

,str2)

;//print(head,length);

}

Golang 實現維吉尼亞加密演算法

維吉尼亞加密演算法 維吉尼亞加密演算法 virginia encryption algorithm 是凱撒加密演算法的變種 假設 a 0,b 1 z 25,在凱撒加密演算法中金鑰只有一位,若金鑰是 d 對應3,則所有字元都向後移動3位 維吉尼亞演算法的金鑰不只一位,一般是乙個大寫的單詞,如以gola...

維吉尼亞密碼的加密解密

coding utf 8 def weijiniya jiemi ciphertext,key ascii abcdefghijklmnopqrstuvwxyz keylen len key ctlen len ciphertext plaintext i 0 while i ctlen j i k...

維吉尼亞密碼

維吉尼亞密碼是在凱撒密碼基礎上產生的一種加密方法,它將凱撒密碼的全部25種位移排序為一張表,與原字母序列共同組成26行及26列的字母表。另外,維吉尼亞密碼必須有乙個金鑰,這個金鑰由字母組成,最少乙個,最多可與明文本母數量相等。維吉尼亞密碼加密方法示例如下 明文 i ve got it.金鑰 ok 密...