存储敏感数据的最佳方法php加密

存储敏感数据的最佳方法php加密,php,crypt,sensitive-data,Php,Crypt,Sensitive Data,您好,显然这不是代码的问题,我非常熟悉php中的salt和md5加密。但是我需要一种安全的方法来在mysql中存储敏感信息。 使用md5非常简单,但又不是最安全的方法。 有什么建议或例子吗? 它需要存储在数据库中,当然也有可能被检索和读取。 最简单的方法就是我要找的 public static function encrypt($string, $salt = NULL){ $mcrypt_iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_12

您好,显然这不是代码的问题,我非常熟悉php中的salt和md5加密。但是我需要一种安全的方法来在mysql中存储敏感信息。 使用md5非常简单,但又不是最安全的方法。 有什么建议或例子吗? 它需要存储在数据库中,当然也有可能被检索和读取。 最简单的方法就是我要找的

public static function encrypt($string, $salt = NULL){

     $mcrypt_iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
     $mcrypt_iv = mcrypt_create_iv($mcrypt_iv_size, MCRYPT_RAND);

     $mcrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $salt, $string, MCRYPT_MODE_ECB, $mcrypt_iv);

     $encoded = base64_encode($mcrypted);

     return $encoded;
}

public static function decrypt($hash, $salt = NULL){

    $mcrypt_iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
    $mcrypt_iv = mcrypt_create_iv($mcrypt_iv_size, MCRYPT_RAND);

    $basedecoded = base64_decode($hash);

    $mcrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $salt, $basedecoded, MCRYPT_MODE_ECB, $mcrypt_iv);

    return $mcrypted;
}

下面的代码是一个工作示例,使用AES-128模式ECB。如果您对使用的加密术语不友好,那么这也不是什么大买卖。只需使用代码。:)

如果要在数据库中存储加密的内容,则不希望对其进行解密。如果你想把它读回去,为什么要先对它进行加密呢

对于加密,确保与未来代码的前向兼容性并使其更安全的最佳方法是使用crypt()

您可以将各种选项传递给crypt(),如果您要存储密码,我可能会使用sha512,其数量足够高,可以进行“循环”。退房: 例如


基本上,您从数据库中获取散列值,然后可以将其用作纯文本的salt,以验证纯文本是否与存储在数据库中的密码相同-这是单向加密,没有解密(但无论如何;)

您称哪些数据敏感,例如?
检索和读取的可能性
-只是好奇,你试过熟悉的md5吗?学究一点,md5不是加密,而是散列。这是不同的,因为MD5散列不需要“解密”。@SirDarius感谢您纠正我的错误,我只是简单地说了一句愚蠢的话:不要费心加密它。一旦有人进入了你的数据库,几乎可以肯定他们也能看到你的数据源。如果应用程序使用非对称加密[公钥/私钥]并且私钥保存在其他地方,则存储加密版本的内容实际上可以保护它的唯一方式是,最好是在锁和钥匙下。加密存储的数据(如帐号)有什么意义?例如,如果我无法取回它?我理解密码不同。那么为什么要加密帐号?加密的本质是隐藏数据,如果可以轻松解密数据,那么最好使用纯文本:)如果web服务器和数据库位于不同的机器上,那么这是有一定逻辑的。尽管即使只有一台服务器受到威胁,你也可能会受到严重威胁。如果web服务器和数据库位于一个不安全的网络上,这完全是另一个问题——在这种情况下,你可能希望有类似端到端加密通信的东西。如上所述,问题似乎是希望将加密的数据存储在数据库中,并在使用之前对其进行解密。这是一个奇怪的要求\