我知道这个问题被问了十亿次因为我在过去的两周里一直在研究所有之前提出的问题和答案 但他们中没有一个真的有一个可以理解的答案。所以我的问题是,我有一个表单,我将用户输入的数据传递给mysql 数据库和部分数据使用AES_Encrypt加密。当我检查数据库时,我可以看到数据已加密,所以我对加密部分很好。 我的问题在于解密部分。我尝试了之前提出的问题的多种变化,没有成功,这就是我到目前为止所做的,
//ENCRYPTING DATA
require 'path to key.php';
$sql = "INSERT INTO applications "(fname, lname, dob, ssn) VALUES ('$fname', '$lname', '$dob', AES_ENCRYPT('$ssn', '".$aeskey."')";
上面的代码可以很好地加密字符串。
这是我感到困惑的地方,我想要选择与记录ID相关的所有数据,并解密该记录的加密数据, 例如,我有一个搜索表单,可以提取数据库中的所有记录,然后您可以选择查看记录,结果显示的形式类似于所使用的表单 输入信息。
所以在我的表单中查看记录我有以下代码。
//DECRYPT DATA
require 'path to key.php';
$conn = new mysqli($servername, $username, $password, $dbname);
$data = "SELECT * FROM $tbl_name where ID = $id";
$query = mysqli_query($conn, $data);
$data2 = mysqli_fetch_array($query);
<input type = "text" name="fname" value="<?php echo $data2['fname']?>"/>
<input type = "text" name="lname" value="<?php echo $data2['lname']?>"/>
<input type = "text" name="dob" value="<?php echo $data2['dob']?>"/>
<input type = "text" name="ssn" value="<?php echo $data2['ssn']?>"/><-----This will display the encrypted data in the encrypted form
所以我需要解密来自输入框的加密数据,如
<input type = "text" name="ssn" value=<?php echo [AES_DECRYPT('ssn', '$aeskey')]?>"/> <---Doesn't work
或者我需要做这样的事情:
$sql SELECT * FROM $tbl_name (AES_DECRYPT('ssn', '$aeskey')) WHERE ID=$id;
或者我认为应该如何使用AES_DECRYPT我完全错了?
答案 0 :(得分:2)
在INSERT
中使用AES_ENCRYPT(MySQL);然后你的SELECT
申请AES_DECRYPT
;埃杰姆:
SELECT fname, lname, dob, AES_DECRYPT(ssn, yourAESKey) as ssn
FROM applications [wHERE ... and other more that you require]
看到AES_DECRYPT
有别名才能返回结果。
仅使用SQL更改$data
字符串:
$data= "SELECT fname, lname, dob, AES_DECRYPT(ssn, yourAESKey) as ssn
FROM applications [WHERE ... and other more that you require]"
你排队:<input type = "text" name="ssn" value="<?php echo $data2['ssn']?>"/><-----This will display the encrypted data in the encrypted form
没有改变;除非在别名中使用 ssn (全部为小写)而是将某些字母或所有字母更改为大写字母,否则为解密文本指定另一个别名;为了不是 ssn (小写)。