随机数加密法即用随机数对计算机上存储的文件进行加密,鉴于随机数本身的随机特性,用随机数加密法给文件加密后极难破解。那么,我今天就给大家讲一下用这种加密方法怎么给文件加密。
如何用随机数加密法给文件加密
一、随机数加密原理
我们要说的加密法远比凯撒密码复杂的多,但其基本的思想是相似的,在密码学上称为移位密码算法。然而,由于它所使用的代码覆盖了整个扩展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,由此可见,位数就是凯撒密码加密和解密的密钥。