資源描述:
《文字的加密與解密》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、文字的加密與解密摘要:每個(gè)字符的都有相應(yīng)的ASCII碼對應(yīng),給文字加密可利用增加或減少字符的ASCII值,產(chǎn)生一組新的文字,達(dá)到加密的效果。然后再制作解密程序還原出文字,使解密者知道文字的真實(shí)信息。關(guān)鍵詞:文字加密解密……余則成打開收音機(jī),接收來自上級(jí)的信息,用筆在紙上記下收音機(jī)講述的代碼,打開密碼本,記下表述的內(nèi)容,劃燃火柴將紙銷毀。此時(shí),他已經(jīng)知道接下的任務(wù)是什么了。……這是近期熱播電視連續(xù)劇《潛伏》中的一段經(jīng)典鏡頭。上級(jí)將任務(wù)寫好后,找出密碼本,將其轉(zhuǎn)換為代碼,稱之為加密;余則成通過從收音機(jī)中接收代碼,用密碼本查找對應(yīng)文字,轉(zhuǎn)換出文字信息,
2、此為解密。在我們講述算法與程序設(shè)計(jì)課程時(shí),同學(xué)們問過我如何制作一個(gè)進(jìn)行文字加密和解密的工具。于是我與同學(xué)進(jìn)行了一節(jié)課的共同思考,決定采用如下ASCII的值改變來解決問題,過程為:1、讀入要加密的文本;2、將需加密的每個(gè)字符的ASCII表示出來,然后增加或減少相應(yīng)ASCII的值,使每個(gè)字變成另一個(gè)字后輸出,產(chǎn)生一批誰都不能理解的文字。3、交給信息接收者一段程序及加密后的文字,接收者通過解密程序?qū)⒃淖纸饷?。接下來我們就開始了程序設(shè)計(jì)制作的過程。一、加密程序的制作:我們用VisualBasic6.0制作右圖所示窗體:這里text1文本框中放入待加密的
3、文字,text2文本框中放入需偏移的位置,每個(gè)字可以不同,text3文本框中產(chǎn)生加密后的文字。假如我們在文本框text1中輸入“余則成是好人”。加密的方法是:將每個(gè)字的ASCII值減去一定的值,再將文字顯示出來。這時(shí)出來的文字誰都不會(huì)理解它的意思了。開始我們考慮的程序如下:PrivateSubCommand1_Click()DimiAsIntegerjmwz=Text1.Textj=Len(jmwz)‘提取文字長度Dimjm(100)AsInteger‘建一個(gè)數(shù)據(jù)庫將提取的每個(gè)字存入‘以下循環(huán)作用為將文字ASCII值減少5后顯示出來Fori=1T
4、ojjm(i)=Asc(Mid(jmwz,i,1))–5‘給每個(gè)文字ASCII值減去5t=t+Chr(jm(i))NextiText3.Text=t‘將文字內(nèi)容顯示在text3文本框中EndSub當(dāng)然地,上述方法由于每個(gè)字的ASCII增加或減少的值是一樣的,很容易被人找出規(guī)律來。這時(shí)我們可以給每個(gè)字符的ASCII值增加或減少不同的數(shù)值,這時(shí),加密出來的文字就很難被找出規(guī)律來。我們增加一個(gè)聯(lián)系碼,由加密者提供給接收者,接收者通過程序?qū)⑵溥€原出來。程序可被我們修改為:PrivateSubCommand1_Click()DimiAsInteger,ka
5、sintegerjmwz=Text1.Textj=Len(jmwz)ad=len(text2.text)’取聯(lián)系碼字符串長度Dimjm(100)AsInteger‘建一個(gè)數(shù)據(jù)庫將提取的每個(gè)字存入Dimad(100)asstring‘建一個(gè)數(shù)據(jù)庫將聯(lián)系碼字符串的每個(gè)字符存入Fork=1toadAd(k)=mid(text2.text,k,1)Nextk‘以下循環(huán)作用為將文字ASCII值減少一定數(shù)值后顯示出來Fori=1Toj‘當(dāng)聯(lián)系碼長度比加密文本長時(shí),減去相應(yīng)位置的數(shù)字,否則重復(fù)聯(lián)系碼內(nèi)容數(shù)字。Ifj6、wz,i,1))–val(ad(i))elsejm(i)=Asc(Mid(jmwz,i,1))–val(ad(imodad))endift=t+Chr(jm(i))NextiText3.Text=t‘將文字內(nèi)容顯示在text3文本框中EndSub然后調(diào)試,我們輸入文字“余則成是好人”輸入聯(lián)系碼“”。我們發(fā)現(xiàn)出來的文字發(fā)音還是差不多的,其它人多念幾遍就能猜出大概意思,。于是,我們在“jm(i)=Asc(Mid(jmwz,i,1))–val(ad(i))”和“jm(i)=Asc(Mid(jmwz,i,1))–val(ad(imodad))”兩句話后面
7、均加入“-55”使文字發(fā)音差距大,產(chǎn)生的文字為“瑩怨硰蕦簢葦”,效果不錯(cuò)。然后我們利用VisualBasic6.0軟件中的“文件”、“生成工程1.exe”生成一個(gè)可執(zhí)行文件。發(fā)給加密操作者使用。二、解密程序的制作我們接下來設(shè)計(jì)解密程序。研究發(fā)現(xiàn):解密程序的原理與加密的程序原理是一樣的。我們制作如右圖所示窗體。程序代碼如下:PrivateSubCommand1_Click()DimiAsInteger,kasintegerjmwz=Text1.Textj=Len(jmwz)adm=len(text2.text)’取聯(lián)系碼字符串長度Dimjkm(10
8、0)AsInteger‘建一個(gè)數(shù)據(jù)庫將提取的每個(gè)字存入Dimad(100)asstring‘建一個(gè)數(shù)據(jù)庫將聯(lián)系碼字符串的每個(gè)字符存入Fo