AES로 암호화 된 테이블의 필드를 사용하여 PHP를 통해 MySQL 테이블을 쿼리하는 올바른 방법을 찾으려고합니다. 나는 last_name과 몇 가지 다른 필드를 잡아서 비교할 쿼리를하는 로그인 폼을 가지고있다. 다음은 관련 구조의 간략한 설명입니다. PHP MySQL에서 사용자 입력 및 암호화 된 데이터를 쿼리/비교
나는 사용하여 데이터를 삽입 :AES_ENCRYPT('".$last_name."','".$encryption_key."')
내가 해독 할 수 있으며, 출력 데이터를 사용하여 :
CAST(AES_DECRYPT(last_name, '$encryption_key') AS CHAR(66)) last_name_decrypt
그러나 나는이 일을 비교 얻을 수 없습니다. 시도했습니다.
$query = "SELECT * from {$tablename} where last_name = AES_ENCRYPT('".$unauth_last_name."','".$encryption_key."')";
도움이나 의견을 보내 주시면 감사하겠습니다.
정리해 주셔서 감사합니다. @Shadow – Johanna
'lastname' 필드가'last_name' 필드 (밑줄)와 다른가요? 그렇다면 암호화되지 않은 형식으로도 사용할 수있는 경우 암호화 된 형식으로 성을 저장하는 것이 무엇입니까? PHP 코드의 입력을 데이터베이스에 저장된 것과 어디에서 비교합니까? 이 방법으로 필드 레벨 암호화를 사용하면 암호화 된 키가 비밀이기 때문에 안전한 데이터를 만들 수 없습니다. MySQL 내에서 데이터를 암호화하는 다른 방법을 확인하고 싶을 수도 있습니다. 체크 아웃 : https://www.mysql.com/products/enterprise/encryption.html – Shadow
아니요 코드를 수정하고 성은 last_name이어야합니다. – Johanna