愷撒密碼”據(jù)傳是古羅馬愷撒大帝用來(lái)保護(hù)重要軍情的加密系統(tǒng)。(即今天我們所說(shuō)的:替代密碼) 它是一種置換密碼,通過(guò)將字母按順序推后起3位起到加密作用,如將字母A換作字母D,將字母B換作字母E。據(jù)說(shuō)愷撒是率先使用加密函的古代將領(lǐng)之一,因此
凱撒密碼,看起來(lái)很神秘,其實(shí)真正理解還是很簡(jiǎn)單的,下面我就來(lái)詳細(xì)教給大家。
方法
首先,想好要說(shuō)的話,盡量簡(jiǎn)潔一點(diǎn),這樣編碼會(huì)容易一些
這個(gè)很簡(jiǎn)單嘛,用ASC 和 CHR 轉(zhuǎn)換一下嘛 打開(kāi)Vb,添加2個(gè)label控件,2個(gè)text控件 1個(gè)command按鈕 代碼如下: Private Function f(ByVal a As String, k As Integer, n As Integer) As String If ((Asc(a) >= 65 And Asc(a) = 97 And Asc(a) = 65
找來(lái)幾張紙,拿出一張,寫(xiě)上要說(shuō)的話,不過(guò)是用英文或者漢語(yǔ)拼音哦。
凱撒密碼是一種非常古老的加密方法,相傳當(dāng)年凱撒大地行軍打仗時(shí)為了保證自己的命令不被敵軍知道,就使用這種特殊的方法進(jìn)行通信,以確保信息傳遞的安全。他的原理很簡(jiǎn)單,說(shuō)到底就是字母于字母之間的替換。下面讓我們看一個(gè)簡(jiǎn)單的例子:“baidu”
接下來(lái),想好偏移度,3-25任一數(shù)字都可,最好這個(gè)數(shù)字對(duì)你們有重要意義。
愷撒移位密碼 密碼的使用最早可以追溯到古羅馬時(shí)期,《高盧戰(zhàn)記》有描述愷撒曾經(jīng)使用密碼來(lái)傳遞信息,即所謂的“愷撒密碼”,它是一種替代密碼,通過(guò)將字母按順序推后起3位起到加密作用,如將字母A換作字母D,將字母B換作字母E。因據(jù)說(shuō)愷撒是率先
將26個(gè)字母在另一張紙上寫(xiě)開(kāi),這樣不容易找混。
“愷撒密碼”據(jù)傳是古羅馬愷撒大帝用來(lái)保護(hù)重要軍情的加密系統(tǒng)。(既是今天我們所說(shuō)的:替代密碼) 它是一種置換密碼,通過(guò)將字母按順序推后起3位起到加密作用,如將字母A換作字母D,將字母B換作字母E。據(jù)說(shuō)愷撒是率先使用加密函的古代將領(lǐng)之一,
現(xiàn)在就是主要過(guò)程了,加密開(kāi)始。如果偏移度是3。而第一個(gè)字母是I那么,加密后的字母就是L,依次類(lèi)推。
供參考 譯碼只需要一句即可 感興趣自己分析下 #include int main(){char s[100];int k;int i;while(~scanf("%s%d", s, &k)){k%=26;for(i = 0; s[i]; i ++)s[i] = (s[i] - 'A' + 26 - (k+i + 1)%26)%26 + 'A';printf("%sn", s);}return 0;}
好了,這就是簡(jiǎn)單的凱撒密碼,如果你羞于表達(dá)自己,不如試試這個(gè)方式表達(dá)心意吧!
所謂柵欄密碼,就是把要加密的明文分成N個(gè)一組,然后把每組的第i個(gè)字連起來(lái),形成一段無(wú)規(guī)律的話。 一般比較常見(jiàn)的是2欄的棚欄密碼。 比如明文:THERE IS A CIPHER 去掉空格后變?yōu)椋篢HEREISACIPHER 兩個(gè)一組,得到:TH ER EI SA CI PH ER 先取出
擴(kuò)展閱讀,以下內(nèi)容您可能還感興趣。
凱撒密碼
恩~ 你都給了明文和密鑰…636f70797a686964616f31333262363061不知道你還要什么方法啊?
如果你不知道凱撒,可以去百度一下,我給你簡(jiǎn)單說(shuō)一下吧~
英文26個(gè)字母(不分大小寫(xiě))可以由數(shù)字01~26來(lái)代替(有人也用00~25來(lái)代替,不過(guò)不常見(jiàn)~)
凱撒全稱(chēng)叫凱撒位移加密法,顧名思義啊~
比如A是01,你用n=4加密之后就是01+4=05,05在字母表里是E,所以A加密之后就是E~
CHINA用n=4加密之后就是GLMRI~ 明白沒(méi)?
對(duì)了,需要說(shuō)明一下,上面舉的例子是字母表向右移動(dòng)4位,n=4也可以理解為向左移動(dòng)4位,那么CHINA加密之后就變成YDEJW~ 不過(guò)不用擔(dān)心,一般情況下都是向右移的,當(dāng)然也不排除某些*向左移(強(qiáng)烈鄙視這種人!!!)…
恩~ 廢話說(shuō)了好多,給你密文吧~說(shuō)明一下,我是用01~26和右移的方法加密的~
Glmri Girwvep Vehms erh XZ Yrmzivwmxc~ 完畢~(我加的有點(diǎn)快,不保證全對(duì),你自己檢查一下哈~)
再補(bǔ)一句,字母表可以循環(huán)用的,比如Z用完了就回到ABC…,這時(shí)候A就相當(dāng)于27~ 明白否?
嘿嘿… 我腹黑一下下~ 如果你想用密碼去虐一個(gè)人的腦細(xì)胞的話,推薦你用00~25和左移的方法,保證他能死至少一半的腦細(xì)胞~
嘿嘿嘿嘿……
凱撒密碼原理及在矩陣中的應(yīng)用
《高盧戰(zhàn)記百》有描述愷撒曾經(jīng)使用密碼來(lái)傳遞信息,即所謂的“愷撒密碼”,它是一種替代密碼,通過(guò)將字母按順度序推后起3位起到加密作用,如將字母知A換作字母D,將字母B換作字母E。因據(jù)說(shuō)愷撒是率先使用加密函的古代將領(lǐng)之一,因此這種加密方法道被稱(chēng)為愷撒密碼。這是一種簡(jiǎn)單的加密方版法,這種密碼的密度是很低的,只需簡(jiǎn)單地統(tǒng)計(jì)字頻就可以破權(quán)譯。現(xiàn)今又叫“移位密碼”,只不過(guò)移動(dòng)的位數(shù)不一定是3位而已。
凱撒密碼為一種替換密碼,此題的加密過(guò)程為先進(jìn)行base64編碼,再進(jìn)行移
在密碼學(xué)中,愷撒密碼(或稱(chēng)愷撒加密、愷撒變換、變換加密)是一種最簡(jiǎn)單且最廣為人知的加密技術(shù)。它是一種替換加密的技術(shù),明文中的所有字母都在字母表上向后(或向前)按照一個(gè)固定數(shù)目進(jìn)行偏移后被替換成密文。
愷撒密碼的加密、解密方法還能夠通過(guò)同余的數(shù)學(xué)方法進(jìn)行計(jì)算。首先將字母用數(shù)字代替,A=0,B=1,...,Z=25。此時(shí)偏移量為n的加密方法即為: E(x) = (x + n) mod 26.
解密就是:
D(x) = (x - n) mod 26.
顯而易見(jiàn),一旦確定了某兩個(gè)字母的對(duì)應(yīng)關(guān)系(即n的值),這種移位密碼很容易被破解。
因此,為了使密碼有更高的安全性,單字母替換密碼就出現(xiàn)了。
明碼表:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密碼表:T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
但是這種加密方式依然可以破解,根據(jù)字母使用頻度表,分析密文中的字母頻率,將其對(duì)照即可破解。
不僅如此,凱撒加密對(duì)加密數(shù)據(jù)也是有要求的,一般情況下,它只支持對(duì)基本的英文字母進(jìn)行加密,如果對(duì)中文等亞太地區(qū)的文字進(jìn)行加密,結(jié)果可想而知,你的隱私將毫無(wú)保留的出現(xiàn)在眾人面前。有人說(shuō),我們可以擴(kuò)展這個(gè)算法,使它支持所有的文字,這么做是可行的,如果采用同余式的方式實(shí)現(xiàn),代碼幾乎不怎么需要改動(dòng),只要字符集本身是Unicode就可以了。但是這種加密的安全性很難滿足應(yīng)用的要求。如果采用單字母替換的方式,程序?qū)⑿枰獦?gòu)建兩個(gè)巨大的字符數(shù)組去保存他們的映射關(guān)系,而且擴(kuò)展性也不好,當(dāng)然也是不可行的。這樣看來(lái),凱撒加密豈不是一無(wú)是處了,其636f70797a6431333363366136實(shí)對(duì)于一般的應(yīng)用,凱撒加密還是足以應(yīng)付的,只要我們對(duì)它稍作改進(jìn)。
凱撒密碼怎么解
它是一種代換密碼。據(jù)說(shuō)愷撒是率先使用加密函的古代將領(lǐng)之一,因此這種加密方法被稱(chēng)為愷撒密碼。
凱撒密碼作為一種最為古老的對(duì)稱(chēng)加密體制,在古羅馬的時(shí)候都已經(jīng)很流行,他的基本思想是:通過(guò)抄把字母移動(dòng)一定的位數(shù)來(lái)實(shí)現(xiàn)加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一個(gè)固定數(shù)目進(jìn)行偏移后被替換成密文。例如,當(dāng)偏移量是3的時(shí)候,所有的字母A將被替換成D,B變成E,以此類(lèi)推X將變成A,Y變成B,Z變成C。由此可見(jiàn),位數(shù)就是凱zhidao撒密碼加密和解密的密鑰。更多追問(wèn)追答追答簡(jiǎn)單的說(shuō)就是數(shù)字換英文的方法,但是偏移值是幾需要推斷,實(shí)在不行就推26次追問(wèn)給個(gè)結(jié)果追答這個(gè)也有可能是數(shù)字。。英文似乎推不出有意義的東西,括號(hào)的6應(yīng)該是位移格數(shù)
凱撒密碼,要求C語(yǔ)言編寫(xiě),求救!
寫(xiě)的一般般,希望對(duì)LZ有所幫助
#include <stdio.h>
#include <string.h>
int main()
{
char str[201];//存放字符
char tmp[11];//臨時(shí)變量
int i;//循環(huán)變量
int len;//存放消息長(zhǎng)度
scanf("%s",tmp);//這里輸入START,開(kāi)始
getchar();//接收回車(chē)
while(strcmp(tmp,"ENDOFINPUT"))
{
gets(str);//由于輸入中有空格,所以用e799bee5baa6e997aee7ad94e78988e69d8331333262343830gets輸入
getchar();//接收回車(chē)
len = strlen(str);
for(i=0;i<len;i++)
{
if(str[i]>='A'&&str[i]<='Z')
{
str[i] -= 5 ;
if(str[i] < 65)
{
str[i] +=26;
}
}
}
scanf("%s",tmp);//這里輸入END,結(jié)束
printf("%s\n",str);//處理完就直接輸出結(jié)果
scanf("%s",tmp);//輸入START表示繼續(xù),輸入ENDOFINPUT則表示最后一個(gè)數(shù)據(jù)集
getchar();//接收回車(chē)
}
return 0;
}
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com