如何用隨機(jī)數(shù)加密法給文件加密

隨機(jī)數(shù)加密法即用隨機(jī)數(shù)對(duì)計(jì)算機(jī)上存儲(chǔ)的文件進(jìn)行加密,鑒于隨機(jī)數(shù)本身的隨機(jī)特性,用隨機(jī)數(shù)加密法給文件加密后極難破解。那么,我今天就給大家講一下用這種加密方法怎么給文件加密。

如何用隨機(jī)數(shù)加密法給文件加密

一、隨機(jī)數(shù)加密原理

我們要說(shuō)的加密法遠(yuǎn)比凱撒密碼復(fù)雜的多,但其基本的思想是相似的,在密碼學(xué)上稱為移位密碼算法。然而,由于它所使用的代碼覆蓋了整個(gè)擴(kuò)展ASCII碼集,因而也包含了代替密碼算法的思想。在加密及解密的操作過(guò)程中,它多次使用隨機(jī)數(shù),對(duì)代碼進(jìn)行移位、交換等操作,從而大大地提高了隨機(jī)數(shù)加密法的保密強(qiáng)度。

二、隨機(jī)數(shù)加密的基本思想:

對(duì)給定的明文文件,每次隨機(jī)讀取若干字節(jié)構(gòu)信息塊,其中的每個(gè)字符代碼在整個(gè)ASCII集內(nèi)隨機(jī)移動(dòng),而后隨機(jī)地交換信息塊中各個(gè)字符的位置。

三、隨機(jī)數(shù)加密法給文件加密的具體過(guò)程: 

第一步:隨機(jī)抽取該次要處理的字符個(gè)數(shù)字節(jié)數(shù)Ns:

Ns=INT(Nmax一Nmin)×RAN()+Nmin

其中Nmax和Nmin分別是Ns的上界和下界;INT是取整函數(shù),RAN()是0到1之間的隨機(jī)數(shù)1(以下同)。

第二步:確定在ASCII碼集內(nèi)向上(加)或向下(減)移動(dòng)的符號(hào)SIGN:

Smid=Smax×RAN()+0.5-Smax/2

SIGN=Smid/ABS(Smid)

其中ABS為絕對(duì)值函數(shù)。

第三步:取S1=SIGN,字符代碼移動(dòng)的距離:

C1=P+S1×LEAP

其中l(wèi)eap為固定移動(dòng)步長(zhǎng)(固定躍遷步)。

第四步:字符代碼在擴(kuò)展ASCII碼集內(nèi)隨機(jī)移動(dòng)(隨機(jī)躍遷)距離R,R由下式?jīng)Q定:

R=INT[Rmax×RAN()+0.5]

式中Rmax為最大隨機(jī)躍遷步長(zhǎng)。

取S2=SIGN(注意S2與S1可能不一樣),移動(dòng)后有:

C2=C1+R*S2

第五步:對(duì)Ns個(gè)字符代碼隨機(jī)交換位置,方法如下:

(a)抽取Ns個(gè)∈[1,Ns]的不同數(shù)字,采用下式:

N1=INT[Ns×RAN()+0.5]

(b)按抽取的Ns個(gè)隨機(jī)數(shù)進(jìn)行代碼位置交換:

C3[1]=C2[ni ] ?(i=1,2...Ns)

第六步:上述操作后的代碼作上下界處理,若代碼值大于254(OFEH),則將之減254;而小于0者將之加254即可;可用下式表示:

C=C3 ( mod 254 ) ?C>0

上述步驟反復(fù)進(jìn)行,直到明文信息處理完為止;解密過(guò)程與上述操作步驟相反。

至此,用隨機(jī)數(shù)加密法給文件加密完成。

小知識(shí)之凱撒密碼:

凱撒密碼作為一種最為古老的對(duì)稱加密體制,在古羅馬的時(shí)候都已經(jīng)很流行,他的基本思想是:通過(guò)把字母移動(dòng)一定的位數(shù)來(lái)實(shí)現(xiàn)加密和解密。例如,如果密匙是把明文字母的位數(shù)向后移動(dòng)三位,那么明文字母B就變成了密文的E,依次類推,X將變成A,Y變成B,Z變成C,由此可見,位數(shù)就是凱撒密碼加密和解密的密鑰。