php敏感数据应用程序-加密/解密

exdqitrt  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(419)

我在一个项目,我们需要建立一个应用程序来存储在mysql数据库敏感信息。我想在应用程序中重用一个密钥,因为我们需要加密输入的数据,然后解密以显示信息。
我在研究钠,但我有个问题。。。他们建议不要重复使用钥匙和零,如果我们遵循这个,我们以后就不能解密了!
有人能告诉我怎么处理这件事吗?
我们将建立一个方法来删除/更改一个可能的突破关键!

dsekswqp

dsekswqp1#

这真是一个宽泛的问题。这实际上取决于你保存的信息以及它的敏感程度。此链接描述加密类型和用法。
https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html
一个例子是使用aes\u加密和aes\u解密。
下面是一个aes\u encrypt和aes\u decrypt mysql函数的快速示例。
将数据库表设置为我使用的二进制类型blob。
其次,创建一个要使用的键。
插入数据库加密。
从数据库中选择解密数据。
这将生成一个随机字符串。

function randomString($length) {//This is a function to create a random String.
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$string = '';    
for ($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters)-1)];}
return $string;}
$ourKey = randimString(16);//get our String in a Varable($ourKey).

在insert上使用aes\u encrypt mysql函数。

$ourInsert = "INSERT INTO MY_TABLE(FIRST_NAME, OUR_KEY)VALUES(AES_ENCRYPT(FIRST_NAME,'".$ourKey."'), ".$ourKey.")";

使用aes\u decrypt mysql函数对其进行解密。

$ourSelect = "SELECT AES_DECRYPT(FIRST_NAME, OUR_KEY) AS FIRST_NAME";

对于密码和更敏感的数据,请使用php的password\u hash()函数。您的db表至少需要75个字符。这里有一个更详细的链接。
http://www.php.net/manual/en/function.password-hash.php
请注意,您不能解密密码\u散列仅与其他数据匹配。
如何使用password\u hash散列密码并将其插入数据库的示例。

$hashedPassWord = password_hash(users password, PASSWORD_BCRYPT, array("cost" => 17));
$insertPass = "INSERT INTO MY_TABLE(PASSWORD)VALUES(".$hashedPassWord.")";

要检查哈希密码,请从db中选择密码,并使用password verify将其与哈希密码匹配。

if (password_verify(users_input, db_password_hash)) {/*do something*/}

请注意,这只涵盖了最基本的内容。您还需要做其他事情,比如在php中使用准备好的语句和转义字符串。我刚接触了一点加密技术让你开始。

相关问题