【问题标题】:Alternatives to Mcrypt for encryption / decryption in PHP?在 PHP 中用于加密/解密的 Mcrypt 的替代品?
【发布时间】:2011-08-09 23:24:02
【问题描述】:

我正在为需要进行加密和解密的 Drupal 模块提供一些代码。我不认为我可以假设 Mcrypt 模块安装在 Drupal 系统上。我可以使用什么作为替代加密机制?

这不是金融的东西,所以我不需要复杂的密码学,但更好就是更好......

【问题讨论】:

  • 你能假设php已经安装了吗?如果没有 - 那么为什么不选择另一种编程语言呢?
  • 这是一个奇怪的讽刺评论
  • @Frank D:是的。但这就是“软件需求”的工作方式。使用您想要和需要的任何内容来创建您的代码(并使其完美、高性能和可读),然后在需求自述文件部分中指定所有依赖项。对于每个程序都是如此,不要试图避免它。
  • 我同意你的观点,但我可以根据平台的广度改变我做事的方式——后者对于我。希望你能看到我的观点
  • @Frank D:我明白了,但我的意见是使用 mcrypt,不要看一些基于 php 的克隆。

标签: php drupal encryption mcrypt


【解决方案1】:

根据 Leon 的回答,PHP Encoder 正在使用可能无法在 Drupal 上运行的 MCrypt 模块。另一种方法是使用 IonCube Encoder。

如果你想要一个更严格的函数,你也可以尝试使用hash()md5()函数来创建你的密钥,并要求你使用gzdeflate()/gzinflate()函数返回的加密函数作为什么Leon的建议。

【讨论】:

    【解决方案2】:

    有几种加密 PHP 代码的方法,使用密钥加密/解密代码使其作为 MCrypt 的替代方案更加安全。

    一种方法是创建一个可能需要密钥才能完成加密或解密的函数。 PHP有它的内置函数,如gzdeflate()gzinflate(),另一个是使用base64_encode()/base64_decode()str_rot13()函数。

    但我不认为使用 PHP Encoder 会起作用。

    【讨论】:

      【解决方案3】:

      如何使用您的数据库? MySQL 具有 AES 和 DES 加密和解密功能。然后,您可以使用“假”查询来获取您的字符串:

      select id, aes_encrypt('My secret text', 'the key string') 
      from permissions 
      limit 1
      

      (如果表中没有至少一个字段,MySQL 将返回一个空集。)

      解密的工作方式相同。它是 128 位 AES,在密码学上还不错,如果你甚至不能确定 MCrypt,我怀疑你会重新编译 MySQL 以获得 256 位 AES。

      【讨论】:

      • 非常有趣的方法...值得深思!
      • 比密钥大小更重要的是它使用的是什么分组密码模式?你知道吗?
      • 聪明。在我的 MySQL 版本中,SELECT aes_encrypt('My secret text', 'the key string'); 有效。
      【解决方案4】:

      Encryption module 模块默认包含一种基本加密方法,它描述为“一种不需要任何 PHP 扩展的简单数学加密方法。”

      【讨论】:

        猜你喜欢
        • 2020-11-24
        • 2018-08-02
        • 2015-11-10
        • 2016-07-25
        • 2014-06-28
        • 2011-01-24
        • 2014-02-24
        • 2013-04-14
        • 2011-10-13
        相关资源
        最近更新 更多