【问题标题】:128-bit PHP Encryption & Decryption of Data128 位 PHP 数据加密和解密
【发布时间】:2013-01-08 03:59:58
【问题描述】:

我有一个客户要求存储在 MySQL 数据库中的所有数据都使用 128 位加密进行加密。

假设在所有数据插入数据库之前,运行一个 PHP 函数对其进行加密。然后,当我从数据库中提取数据时,我运行一个解密函数来吐出原始文本/信息。

谁能指出我正确的方向。我知道这些功能将使用共享/公共密钥来加密和解密,但是是什么使它成为 128 位? PHP 中是否有执行此操作的预构建函数?

感谢任何建议。

斯科特

【问题讨论】:

    标签: php encryption


    【解决方案1】:

    通常,“128 位加密”是指使用 128 位密钥的symmetric encryptionAES-128 是加密算法的绝佳选择。

    您还需要选择mode of operation:如果您只需要隐私,CBC、CFB、OFB 和 CTR 都是不错的选择,但如果您还想保护数据不被篡改,您应该使用authenticated encryption模式如EAX不要使用 ECB 模式,除非您的所有记录都短于单个 AES 块(也是 128 位),最好不要使用。

    根据您选择的模式,您通常还需要为每条记录生成一个初始化向量 (IV),它应该是一个唯一且不可预测的随机密码块(AES 为 128 位)。有很多方法可以生成一个,但是两个好的方法 (recommended by NIST) 要么使用 cryptographically secure pseudorandom number generator 的输出,要么在 ECB 模式下加密唯一 ID(这是可以使用的罕见情况之一)。根据您使用的加密库,它可能会为您解决这个问题。请注意,如果您曾经更改记录中的加密数据,您也应该始终更改 IV。

    正如其他答案所指出的,如果您使用 PHP,mcrypt 是加密库的不错选择。

    【讨论】:

    • 非常感谢您提供的信息。我想知道您是否可以向我展示一个完整的加密和解密功能的示例?例如,如果我的字符串是“这是一个字符串”并且它被存储为 $string?
    【解决方案2】:

    我希望here 是您的解决方案。参考页面上encryptdecrypt这两个函数,抓住思路。

    【讨论】:

      【解决方案3】:

      是的。您需要研究用于加密的类/API,他们必须在其中提到这一点。它们还取决于您使用的算法类型。请follow this link to learn more about this.Here is a breif 解释一下加密。你可以找到sample of code here,但更推荐mycrypt

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-07
        • 1970-01-01
        • 2021-12-20
        • 2011-01-15
        • 2013-10-12
        • 1970-01-01
        • 2020-12-03
        • 2017-03-27
        相关资源
        最近更新 更多