這個演算法思想就是:當我們隨機輸入的要加密的一串明文,隨機生成乙個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 密...