伪随机数加密思路

原创 2006年06月14日 15:23:00

伪随机数加密思路
        伪随机数加密是伪随机数组作为密钥加密的例子。
        它工作时需要用户输入密码。密码是干什么的?密码就像一个种子,有了它才能完成加密或解密。密码的数值渗透到整个过程,它决定,密钥的发生和使用细节,而密钥串正是伪随机数组,这里为每个明文字节准备一个或多个字节的密钥。密钥在这里可以说是一种充填物,经它对明文的充填而转变成密文,解密就是将密钥分离出来。

        通常伪随机数用随机函数来产生,这样就产生一个问题,破解者可以通过阅读程序知道你的随机函数并得到全部的随机数组成员。如果你的加密过于简单,他可以用随机数组逐字节的与你的密文进行运算,实现破解,那你的密文就危险了。如何使他不能得逞?这里给出两个方法,可以有效的对付他。

        1 多次加密法。一个明文字节用两个以上的密钥字节进行加密,如果使用多个随机函数来生成密钥最好,随机函数种子要和密码相关。如果用同一函数要使用不同的区段,各区段的起点(对应不同的种子)一定是密码相关的也就是动态的、随加密者的密码动态变化的。这样处理的结果是破解几乎无计可施。

        2 序列重排法。通过运算得到了密钥的随机数组,不直接使用它,对随机数组的序列进行重新排列,实际作用是建立新的数组,这个重排最好用其它随机数组来完成,随机函数种子要和密码相关。如果使用相同的函数要使用不同的区段,各区段的起点(对应不同的种子)最好是密码相关的也就是动态的、随加密者的密码动态变化的。这样生成的随机数组,对破解者来说就是真随机数组了,你就可以实现一次一密的安全加密了。

        3 随机函数随机函数内部参数动态化。让它内部参数和用户密码相关,这样破解者将无法复现伪随机数组供破解使用,实际是对随机函数簇中的一个进行调用,如果是多个参数将更好,但要确保随机函数的发散性不被破坏或影响。

        如果加密程序编排得当,破解无从下手。只能用暴力破解。这里是这样对付他们的。无论密码正确与否都将进行解密操作,如果密码正确可以解密,如果错误将毁坏密文。所以破解者必须判断结果,从而给他造成大麻烦。
         其实防止暴力破解、穷举法的最有效措施,对文件进行二次加密即可。破解者无法判断中间结果的是否成功:),而且一次加密后也不会有空白为分析提供方便。但如果采用单一密码进行二次加密,窃密者知晓后可设计专门的程序进行二次解密。保险的做法是二次加密采用不同的密码,使其彻底绝望。当然这是要牺牲加密速度的做法,用户要根据具体情况选择加密方案。
        防止暴力破解、穷举法的另一方法是加长密码的位数。这个方法肯定有效但是给使用者也造成了使用上的麻烦。你可以这样做,让程序自动对密码加首尾字符串,而首尾串表写在文本文件里供使用者拷贝,然后修改中间部分即可,需要通讯双方约定好其内容,并可经常更改。因为是自动添加的你就可以做长一些,可以用一些冷僻的汉字啊符号啊什么的做密码。密码增加许多位这对窃密者是个大麻烦,破解时间将是超级天文数字,最终迫使他夹着尾巴逃掉。 这里密码的位数增加对运算速度几乎没有什么影响。
         好的加密程序应该不怕算法公开,甚至源程序公开,在完全透明的情况下,破译者对秘文仍无计可施。

相关文章推荐

生成伪随机数的新思路 ——借助RSA算法

转自:http://www.chncla.com/yk/201006/p_7.html 最近浏览“程序员论坛”时发现不少好帖,增长了不少知识,现拿其中一则为例与大家共同分享心得。       某人...
  • my_xxh
  • my_xxh
  • 2015年04月02日 20:36
  • 1175

C#409-伪随机数加密,源代码

  • 2017年08月10日 22:47
  • 54KB
  • 下载

Silverlight信息加密 - 通过Rfc2898DeriveBytes类使用基于HMACSHA1的伪随机数生成器实现PBKDF2

在上一篇文章当中,介绍到了通过Silverlight获取web.config中的值,最后提到了加密的问题,因此首先对该安全问题做一个简单的描述。 问题描述 1. 下方是我的web.config文件...

开源polarssl加密库使用详解之二:伪随机数发生器(DRBG)

随机数在密码学中的具有十分重要的地位,被广泛用于密钥产生、初始化向量、时间戳、认证挑战码、密钥协商、大素数产生等等方面。随机数产生器就是用于产生随机数的算法、函数以及设备。因此它的安全性也就对密码系统...

生成伪随机数.rar

  • 2010年07月02日 13:55
  • 35KB
  • 下载

伪随机数的生成

  • 2013年10月16日 13:31
  • 1KB
  • 下载

Python3 random(伪随机数 模块)

Python3 random(伪随机数 模块)
  • Rozol
  • Rozol
  • 2017年05月02日 19:39
  • 417

伪随机数发生器的FPGA实现与研究

  • 2016年06月05日 23:50
  • 200KB
  • 下载

使用线性同余法生成伪随机数/序列(C++实现)

计算机上可以用物理方法来产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生,这样产生的序列与真正的随机数序列不同,所以称为伪随机数或伪随机序列,只要方法和参数选择合适,所产生的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:伪随机数加密思路
举报原因:
原因补充:

(最多只允许输入30个字)