以下哪种模式:cbc,cfb,ctr,ecb,ncfb,nofb,ofb,stream都是安全的,绝对禁止

时间:2011-01-01 12:49:30

标签: php cryptography mcrypt

安全性是指编码字符串与随机噪声无法区分,并且在同一文本的每次加密时都不同,因此无法猜测所使用的加密算法或对编码文本进行任何字典攻击。

第二:输出字符串长度不易对应输入字符串长度,因此无法对该帐户进行猜测。

第三:可以验证提供的密码是否正确,因此解码功能可以返回false而不是假设解码的随机字符串。

---编辑:这是给定算法和模式编码的速度有多快:

0.554 : cast-128 : ctr : 8
0.556 : gost : ncfb : 8
0.5562 : cast-128 : ecb : 8
0.5566 : cast-128 : ncfb : 8
0.5579 : gost : cbc : 8
0.5596 : gost : cfb : 8
0.5596 : gost : ofb : 8
0.5601 : gost : ctr : 8
0.5613 : cast-256 : cfb : 16
0.5621 : twofish : cbc : 16
0.5622 : rijndael-128 : ctr : 16
0.5632 : twofish : cfb : 16
0.5646 : rijndael-128 : cfb : 16
0.5656 : rijndael-128 : ofb : 16
0.5657 : rijndael-128 : ncfb : 16
0.5658 : loki97 : cbc : 16
0.5663 : gost : ecb : 8
0.5667 : cast-128 : cfb : 8
0.5674 : cast-128 : ofb : 8
0.5675 : rijndael-128 : ecb : 16
0.5684 : loki97 : ctr : 16
0.5684 : rijndael-128 : nofb : 16
0.5686 : loki97 : ecb : 16
0.5688 : loki97 : cfb : 16
0.5692 : gost : nofb : 8
0.57 : saferplus : ecb : 16
0.5701 : cast-256 : nofb : 16
0.5704 : loki97 : ncfb : 16
0.571 : twofish : ncfb : 16
0.5719 : cast-256 : ecb : 16
0.5728 : cast-256 : cbc : 16
0.573 : twofish : ofb : 16
0.5731 : cast-256 : ofb : 16
0.5737 : loki97 : nofb : 16
0.5741 : saferplus : ctr : 16
0.5748 : twofish : ecb : 16
0.575 : rijndael-192 : cfb : 24
0.5759 : cast-256 : ctr : 16
0.5769 : cast-128 : nofb : 8
0.5776 : saferplus : ofb : 16
0.5778 : saferplus : ncfb : 16
0.5778 : twofish : nofb : 16
0.5783 : rijndael-128 : cbc : 16
0.5795 : rijndael-192 : ecb : 24
0.5801 : rijndael-192 : cbc : 24
0.5808 : rijndael-192 : nofb : 24
0.5809 : saferplus : cbc : 16
0.581 : saferplus : nofb : 16
0.5829 : rijndael-192 : ctr : 24
0.5837 : serpent : ctr : 16
0.5845 : cast-256 : ncfb : 16
0.5856 : xtea : ecb : 8
0.5857 : serpent : cbc : 16
0.5859 : xtea : ctr : 8
0.5863 : saferplus : cfb : 16
0.5877 : twofish : ctr : 16
0.5881 : xtea : nofb : 8
0.5887 : xtea : ofb : 8
0.5891 : cast-128 : cbc : 8
0.5892 : xtea : ncfb : 8
0.5895 : rijndael-192 : ncfb : 24
0.5913 : serpent : cfb : 16
0.5918 : serpent : ofb : 16
0.5934 : rijndael-256 : ecb : 32
0.5935 : rijndael-256 : cbc : 32
0.5936 : serpent : nofb : 16
0.5943 : loki97 : ofb : 16
0.595 : rijndael-192 : ofb : 24
0.5958 : rijndael-256 : ctr : 32
0.596 : blowfish-compat : cbc : 8
0.5962 : serpent : ecb : 16
0.5972 : rijndael-256 : cfb : 32
0.5976 : rijndael-256 : ncfb : 32
0.5977 : xtea : cbc : 8
0.5982 : rc2 : ctr : 8
0.5989 : blowfish-compat : cfb : 8
0.599 : rc2 : cfb : 8
0.6 : des : cfb : 8
0.6002 : rc2 : nofb : 8
0.6009 : blowfish-compat : ctr : 8
0.6013 : rc2 : cbc : 8
0.6021 : rc2 : ncfb : 8
0.604 : rijndael-256 : nofb : 32
0.6043 : blowfish-compat : ncfb : 8
0.6043 : des : nofb : 8
0.6055 : des : ecb : 8
0.607 : blowfish : cbc : 8
0.6078 : rc2 : ecb : 8
0.6081 : blowfish-compat : nofb : 8
0.6081 : des : cbc : 8
0.6093 : blowfish : ecb : 8
0.6098 : des : ofb : 8
0.6105 : blowfish : cfb : 8
0.6113 : blowfish-compat : ofb : 8
0.6137 : rc2 : ofb : 8
0.6139 : xtea : cfb : 8
0.6141 : serpent : ncfb : 16
0.6144 : des : ctr : 8
0.6174 : blowfish : ofb : 8
0.6184 : blowfish : ncfb : 8
0.6218 : des : ncfb : 8
0.6228 : blowfish-compat : ecb : 8
0.6228 : rijndael-256 : ofb : 32
0.6253 : blowfish : nofb : 8
0.628 : blowfish : ctr : 8
0.6343 : tripledes : ctr : 8
0.6356 : tripledes : cfb : 8
0.6365 : tripledes : cbc : 8
0.6367 : tripledes : ncfb : 8
0.6368 : tripledes : ecb : 8
0.647 : tripledes : ofb : 8
0.6582 : tripledes : nofb : 8

从上到下哪个最安全?

2 个答案:

答案 0 :(得分:2)

第二:这没有任何意义。你意识到加密4个字节的结果将不同于加密4兆字节的结果,不是吗?通常,为了掩盖实际长度(当加密密码和类似时)使用填充 - 要加密的数据附加一定数量的字节,然后整个事物被加密。但是再次加密4字节长密码和48字节长密码之间存在差异(除非你使用填充到64字节,但你明白了)。

第三:哈希用于此。即您在加密数据中包含原始数据(或一些其他数据)的哈希值。在解密之后,重新计算散列并将其与存储的散列进行比较。注意,比较时可以进行定时攻击,因此必须正确地进行比较。

一般来说 - 你正试图重新发明轮子。如果您只需要使用安全密钥(甚至密码)加密数据,请使用OpenPGP。它解决了您所提出的所有问题,并在重新发明强加密时会提出这些问题。 OpenPGP允许您使用普通密码进行加密。

答案 1 :(得分:0)

在这里查看:http://en.wikipedia.org/wiki/Block_cipher_modes_of_operatio了解某些背景信息。

一切都取决于。一些有众所周知的缺点,你必须真正看看组合密码/连接和你如何使用它的具体细节。

对于“随意使用”,你可以说分块密码模式不是密码系统中最敏感的部分。

只有当你想将块密码转换为流密码时才有用,例如:

  • CTR
  • CFB
  • OFB

因此,除非你需要这样做,否则对你没用。

ECB是最简单的,主要的缺点是相同的明文块将导致相同的密文。这几天几乎没有理由使用它。

压制你的观点:

  1. 实际上并不依赖于分组密码模式。您可能希望使用salt或加密密码N次以避免预先计算的表攻击。

  2. 没有发生。输入在加密前填充

  3. 不确定你的意思......

  4. 编辑:我同意Eugene,如果你不需要,不要重新发明轮子!

相关问题