MySQL数据加密与解密

MySQL数据加密与解密


1.测试环境 MySQL 8.0 版本 .Net Framework 4.5.2
2.MySQL 自带的加密函数:aes_encrypt() 解密函数 aes_decrypt()
3.插入数据加密

INSERT INTO XXX VALUES(' aes_encrypt('加密的数据','密码')');

4.查询数据解密

SELECT aes_decrypt(`列属性值`,'密码') FROM XXX;

5.注:使用aes_encrypt()加密后数据为二进制类型。取出数据的方法
一:需设置字段类型为二进制字段属性(blob类型)
二:将密文十六进制化,再存入varchar/char列。需要用到HEX()来存入,用UNHEX()取出。(未验证)
6.读取MySQL数据库的blob对象

//方法一:使用反序列化(测试未通过 异常:分析完成之前遇到流结尾)(可能是数据源本身问题)
//使用MySqlDataReader对象 获取读取的byte[]类型 blob
 MemoryStream ms = new MemoryStream(blob);
 ms.Position = 0;
 BinaryFormatter bFormatter = new BinaryFormatter()
 Object obj =bFormatter.Deserialize(ms);
 int[] arr = (int[])obj;
 ms.Close();
 string arrStr = "";
 for (int i = 0; i < arr.GetLength(0); i++)
 {
    arrStr += arr[i].ToString();
 }     

           
//方法二:直接获取查询结果的byte[]      编码为字符串     
byte[] bResult = (byte[])dtResult.Rows[0][0];
string res = System.Text.Encoding.UTF8.GetString(bResult);

你可能感兴趣的:(MySQL)