由於它是一種對稱密碼體制,加解密的金鑰是一樣的,下邊簡單說明一下加解密加密過程:
密文:c=m+k (mod 26)
解密過程:
明文:m=c-k (mod 26)
破解時主要利用了概率統計的特性,e字母出現的概率最大。
下面重點說一下解密的程式實現:我是用c寫的,在vc6.0下調試執行正確
1#include
"stdio.h"2
#include
"ctype.h"3
#include
"stdlib.h"4
56main(
intargc ,
char
*argv)
7
//判斷程式輸入引數是否正確
2930
31if
((fp_ciper
=fopen(argv[1],
"r"))
==null)
3236
while
((ch_ciper
=fgetc(fp_ciper))
!=eof)
37switch
(ch_ciper)
3867
fclose(fp_ciper);
6869
for(i=0
;i<
26;i++)
70if
(num[i]
>
temp)
7175
if(j
<5)
76key=(j
+1+26
)-5;
//是按字母表的第幾位計算
77//
而不是按下標,故加1
78//
5是指e在字母表中的位序
79else
80key=(j
+1)-
5;8182
83if
((fp_ciper
=fopen(argv[1],
"r"))
==null)
84
//再次開啟密文,進行解密
88if
((fp_plain
=fopen(argv[2],
"w"))
==null)
89
//把明文存到此檔案
93while
((ch_ciper
=fgetc(fp_ciper))
!=eof)
94102
fclose(fp_ciper);
103fclose(fp_plain);
104printf(
"解密成功,金鑰key=%d,明文已儲存到檔案中,謝謝使用!\n
",key);
105}
106
凱撒密文的破解程式設計實
凱撒密文的破解程式設計實現 凱撒密文的破解程式設計實現 近來安全的發展,對密碼學的研究越來越重要,雖然我們現在大多採用的是 非對稱密碼體制,但是同時由於處理及其它的一些重要原因,對傳統密碼仍然 是在大量的使用,如移位,替代的基本思想仍然沒有改變,我個人認為,將來 的很長時間內,我們必將會花大量的時間...
凱撒密碼的java實現
簡單的加密方式,基本原理就不說了,谷歌一大堆,中也寫了注釋。已封裝,可根據實際需求更改加密 解密規則。package helper 凱撒密碼加密與解密幫助類 author chenql public class caesarcodehelper else if chararray i a chara...
凱撒密碼的簡單實現
凱撒密碼作為一種最為古老的對稱加密體制,在古羅馬的時候都已經很流行,他的基本思想是 通過把字母移動一定的位數來實現加密和解密。明文中的所有字母都在字母表上向後 或向前 按照乙個固定數目進行偏移後被替換成密文。例如,當偏移量是3的時候,所有的字母a將被替換成d,b變成e,以此類推x將變成a,y變成b,...