伪随机数加密思路

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

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

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

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

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

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

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

梅森旋转算法--伪随机数(加密、身份信息ID号)

http://blog.csdn.net/ACdreamers/article/details/44656743 今天主要是来研究梅森旋转算法,它是用来产生伪随机数的,实际上产生伪随机数的方法有很多...
  • Touch_Dream
  • Touch_Dream
  • 2017年04月01日 22:56
  • 815

Insecure Randomness引发对随机数生成器抵挡加密攻击的方法

一、由nextInt()实施的随机数生成器不能抵挡加密攻击 1、不安全的随机数:电脑是一种具有确定性的机器,因此不可能产生真正的随机性。伪随机数生成器 (PRNG)  近似于随机算法,始于一个能计算...
  • Ashes18
  • Ashes18
  • 2017年09月26日 12:32
  • 612

真随机数加密

        用真随机数做密钥的加密称为真随机数加密,加密很简单但需要和明文字节数一样长度的真随机数字节,然后一对一的顺序相加或者异或起来就完成了加密。解密则是做加密的逆运算。如此可见如果真随机数是...
  • sjd163
  • sjd163
  • 2007年10月07日 10:34
  • 1160

一个利用随机数加密字串的算法

首先这个算法没什么特殊之处,只是怕以后找不到,所以放到了这上面        每个字节加密后有6种结果(占两个字节,如果需要大于6种的话,就要多用1个字节,即占3 个字节),也就是说如果字串占n个字...
  • lang_csdn
  • lang_csdn
  • 2004年10月24日 13:39
  • 962

伪随机数加密思路

伪随机数加密思路        伪随机数加密是伪随机数组作为密钥加密的例子。        它工作时需要用户输入密码。密码是干什么的?密码就像一个种子,有了它才能完成加密或解密。密码的数值渗透到整个过...
  • sjd163
  • sjd163
  • 2006年06月14日 15:23
  • 2378

密码学常见基本概念-随机数,伪随机数产生器

密码学都会涉及到随机数,因为许多密码系统的安全性依赖于随机数的生成。     序列密码的保密性完全取决于密钥的随机性。如果密钥是真正的随机数,那么这种体制理论上就是不可破译的。但这种方式所需要的密钥...
  • BadAyase
  • BadAyase
  • 2016年12月22日 10:52
  • 1595

加密法随机数生成器

除了传统的线性同余法(即C语言里的rand())产生伪随机数外,还可以用密码来编写能够生成强伪随机数的伪随机 数生成器。密码的机密性是支撑伪随机数生成器不可预测性的基础。原理如下图: 有关...
  • keyu0915
  • keyu0915
  • 2017年08月26日 21:14
  • 302

一个生成伪随机数的超级算法【转】

什么叫伪随机数? 真正意义上的随机数(或者随机事件)在某次产生过程中是按照实验过程中表现的分布概率随机产生的,其结果是不可预测的,是不可见的。而计算机中的随机函数是按照一定算法模拟产生的,其结果是确定...
  • LVXIANGAN
  • LVXIANGAN
  • 2017年06月15日 15:32
  • 859

用伪随机数打造坚实的密钥

      大家知道伪随机数组是一种分布均匀的周期性数组。所谓分布均匀是指所有可能出现的元素都均匀出现了,并且它的平均值接近于元素的中值。         伪随机数组由随机函数生成,这是一类有趣的东西...
  • sjd163
  • sjd163
  • 2006年06月14日 15:12
  • 1257

AES加密算法实现

用java库,scala实现AES算法
  • Mtchy
  • Mtchy
  • 2016年05月13日 17:24
  • 950
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:伪随机数加密思路
举报原因:
原因补充:

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