我想加密密码以防止 SQL 注入和其他攻击,我在 PHP 中使用了一个加密功能,但我不知道如何使用它来加密密码。
我希望对用户表中的每个密码进行加密,以便我可以连接到数据库并使用查询,但它不起作用。
任何人都可以帮助我吗?
ecnription.php
<?php
require_once('include/connect.php');
if(isset($_SESSION['user_id']))
{
$id= $_SESSION['user_id'];
}
$sql = mysql_query("SELECT password FROM user WHERE user_id= '$id'")or die(mysql_error());
while($row = mysql_fetch_array($sql))
{
$enc_pass= $row['password'];
}
error_reporting(0);
class Encryption
{
const CYPHER = MCRYPT_RIJNDAEL_256;
const MODE = MCRYPT_MODE_CBC;
const KEY = 'somesecretphrase';
public function encrypt($plaintext)
{
$td = mcrypt_module_open(self::CYPHER, '', self::MODE, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, self::KEY, $iv);
$crypttext = mcrypt_generic($td, $plaintext);
mcrypt_generic_deinit($td);
return base64_encode($iv.$crypttext);
}
public function decrypt($crypttext)
{
$crypttext = base64_decode($crypttext);
$plaintext = '';
$td = mcrypt_module_open(self::CYPHER, '', self::MODE, '');
$ivsize = mcrypt_enc_get_iv_size($td);
$iv = substr($crypttext, 0, $ivsize);
$crypttext = substr($crypttext, $ivsize);
if ($iv)
{
mcrypt_generic_init($td, self::KEY, $iv);
$plaintext = mdecrypt_generic($td, $crypttext);
}
return trim($plaintext);
}
}
$encrypted_string = Encryption::encrypt($enc_pass);
$decrypted_string = Encryption::decrypt($encrypted_string);
echo $encrypted_string . "<br>" . PHP_EOL;
var_dump($id);
echo $decrypted_string . "<br>" . PHP_EOL;