随机数加密法即用随机数对计算机上存储的文件进行加密,鉴于随机数本身的随机特性,用随机数加密法给文件加密后极难破解。那么,我今天就给大家讲一下用这种加密方法怎么给文件加密。

如何用随机数加密法给文件加密

一、随机数加密原理

我们要说的加密法远比凯撒密码复杂的多,但其基本的思想是相似的,在密码学上称为移位密码算法。然而,由于它所使用的代码覆盖了整个扩展ASCII码集,因而也包含了代替密码算法的思想。在加密及解密的操作过程中,它多次使用随机数,对代码进行移位、交换等操作,从而大大地提高了随机数加密法的保密强度。

二、随机数加密的基本思想:

对给定的明文文件,每次随机读取若干字节构信息块,其中的每个字符代码在整个ASCII集内随机移动,而后随机地交换信息块中各个字符的位置。

三、随机数加密法给文件加密的具体过程: 

第一步:随机抽取该次要处理的字符个数字节数Ns:

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

其中Nmax和Nmin分别是Ns的上界和下界;INT是取整函数,RAN()是0到1之间的随机数1(以下同)。

第二步:确定在ASCII码集内向上(加)或向下(减)移动的符号SIGN:

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

SIGN=Smid/ABS(Smid)

其中ABS为绝对值函数。

第三步:取S1=SIGN,字符代码移动的距离:

C1=P+S1×LEAP

其中leap为固定移动步长(固定跃迁步)。

第四步:字符代码在扩展ASCII码集内随机移动(随机跃迁)距离R,R由下式决定:

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

式中Rmax为最大随机跃迁步长。

取S2=SIGN(注意S2与S1可能不一样),移动后有:

C2=C1+R*S2

第五步:对Ns个字符代码随机交换位置,方法如下:

(a)抽取Ns个∈[1,Ns]的不同数字,采用下式:

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

(b)按抽取的Ns个随机数进行代码位置交换:

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

第六步:上述操作后的代码作上下界处理,若代码值大于254(OFEH),则将之减254;而小于0者将之加254即可;可用下式表示:

C=C3 ( mod 254 )  C>0

上述步骤反复进行,直到明文信息处理完为止;解密过程与上述操作步骤相反。

至此,用随机数加密法给文件加密完成。

小知识之凯撒密码:

凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。例如,如果密匙是把明文字母的位数向后移动三位,那么明文字母B就变成了密文的E,依次类推,X将变成A,Y变成B,Z变成C,由此可见,位数就是凯撒密码加密和解密的密钥。