我想构建一个可以存储患者信息的php应用程序。我在互联网上发现了两个功能。一种用于加密,另一种用于解密,但是我遇到了一些问题。
这是一个例子。我需要以这种方式存储信息的色调。 我需要知道这是否会使我的应用变慢。
function encryptthis($data, $key) {
$encryption_key = base64_decode($key);
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$encrypted = openssl_encrypt($data, 'aes-256-cbc', $encryption_key, 0, $iv);
return base64_encode($encrypted . '::' . $iv);
}
function decryptthis($data, $key) {
$encryption_key = base64_decode($key);
list($encrypted_data, $iv) = array_pad(explode('::', base64_decode($data), 2),2,null);
return openssl_decrypt($encrypted_data, 'aes-256-cbc', $encryption_key, 0, $iv);
}
if(isset($_POST['login'])){
$username = $_POST['username'];
$password = $_POST['password'];
$usrEncr = encryptthis($username, $key);
$pswEncr = encryptthis($password, $key);
$users = DB::query('SELECT * FROM users');
foreach ($users as $user) {
if(decryptthis($user['username'], $key) == $username && decryptthis($user['password'], $key) == $password){
$user = array(
'id' => $user['id'],
'name' => $user['username']
);
setcookie("loginCredentials", json_encode($user), time() + 7200);
header("Refresh:0");
}
}
}
我必须选择所有用户并解密所有用户名和密码,以查看是否与给定的用户名和密码匹配,因为每次我加密相同的单词时,加密的字符串都是不同的。
这是一种安全的方法吗? 对不起,我的英语不好。
答案 0 :(得分:-2)
您可以使用仅在php中实现的哈希技术来代替此功能 例如 md5(您必须加密的文本) 并存储在数据库中 在检查创建输入的哈希并在db中用哈希检查输入的哈希