002-01-01 来自山那头儿表哥“大水牛”通过GPT4 获取的mysql 加解密:base64, hex, aes

发布时间:2024年01月05日

02-01-01 来自山那头儿表哥“大水牛”通过GPT4 获取的mysql 加解密:base64, hex, aes

1,大水牛:数据加密的为何那么重要

GPT:
为了保障个人财产和生命的安全,必须有意识地保护个人的敏感信息。
生活中的个人敏感信息包括如下内容:生物识别、宗教信仰、金融账户、行踪轨迹、健康信息、民族和宗教信仰、性取向和性偏好、教育信息、隐私通讯等。
1、生物识别信息:如个人基因、指纹、声纹、掌纹、耳廓、虹膜、面部特征等等,可以用于身份验证和个人信息的保护。
2、个人身份信息:包括姓名、身份证号码、出生日期、家庭住址、政治面貌、职业、军官证、护照、驾驶证、工作证、社保卡、居住证等敏感信息。
3、个人财务信息:包括银行账号、鉴别信息(口令)、存款信息(包括资金数量、支付收款记录等)、房产信息、信贷记录、征信信息、交易和消费记录、流水记录等,以及虚拟货币、虚拟交易、游戏类兑换码等虚拟财产信息等,这些信息可能被用于金融诈骗或盗取个人财产。
4、个人行踪轨迹:包括行踪轨迹、旅行记录、通讯记录等,这些信息可能被用于追踪和监控个人行动,侵犯个人隐私。
5、个人健康生理信息:个人因生病医治等产生的相关记录,如病症、住院志、医嘱单、检验报告、手术及麻醉记录、护理记录、用药记录、药物食物过敏信息、生育信息、以往病史、诊治情况、家族病史、现病史、传染病史等,以及与个人身体健康状况产生的相关信息等,这些信息可能会对个人的就医和健康保健产生影响,需要严格保护。
6、个人网络身份标识信息:系统账号、邮箱地址及与前述有关的密码、口令、口令保护答案、用户个人数字证书等。
7、其他信息:个人电话号码、性取向、婚史、宗教信仰、未公开的违法犯罪记录、通信记录和内容、行踪轨迹、网页浏览记录、住宿信息、精准定位信息等。

2, 大水牛: mysql中有哪些常用的数据加密方法

GPT:

2.1 base64 加解密

示例如下:

select to_base64('要加密的字段或内容');
-- 结果: 6KaB5Yqg5a+G55qE5a2X5q615oiW5YaF5a65
select from_base64('6KaB5Yqg5a+G55qE5a2X5q615oiW5YaF5a65');
-- 结果:要加密的字段或内容

2.2 hex 加解密

select hex('要加密的字段或内容');
-- 结果: E8A681E58AA0E5AF86E79A84E5AD97E6AEB5E68896E58685E5AEB9
select unhex('E8A681E58AA0E5AF86E79A84E5AD97E6AEB5E68896E58685E5AEB9');
-- 结果:要加密的字段或内容

2.3 base64 和 hex 加解密的区别

hex编码的特点是: 体积大,解码编码速度快。
base64编码的特点: 体积小,但是由于算法相对复杂所以解码编码速度比较慢。
两者明显的缺点,可以简单地破解。

2.4 使用aes对称加密方法

示例:

select aes_encrypt('要加密的字段或内容', '密钥');
select aes_decrypt(aes_encrypt('要加密的字段或内容', '密钥'), '密钥');

2.5 使用aes对称加解密的弊端

加密之后的内容,可能是无法似乎别的符号, 示例如下。

select aes_encrypt('要加密的字段或内容', '密钥'); 
-- ??+VN??w?Dy???T??t?c:5OAr                                 |

为此,一般是结合hex 和base64 来使用,示例如下:

select to_base64(AES_ENCRYPT('待加密的明文', '秘钥')); 
select cast(AES_DECRYPT(from_base64(to_base64(AES_ENCRYPT('待加密的明文', '秘钥'))), '秘钥') as char); 

SELECT HEX(AES_ENCRYPT('原始字符串','密钥'));
SELECT cast(AES_DECRYPT(UNHEX(HEX(AES_ENCRYPT('原始字符串','密钥'))), '密钥') as char);

上述的cast(… as char) 不是必须的,在某些java的mysql 客户端下可能显示中文异常, 可以用这个方法解决。

2.6 更加安全的加密方式

SHOW VARIABLES LIKE 'block_encryption_mode';
SET block_encryption_mode = 'AES-128-CBC';
SET @KEY = '1234567890adbcde';
SET @Iv = '1234567890hjlkew';
-- 加密
select to_base64(aes_encrypt('加密前的内容a123331', @KEY, @Iv));
-- 解密
select cast(aes_decrypt(from_base64(to_base64(aes_encrypt('加密前的内容a123331', @KEY, @Iv))), @KEY, @Iv) as char);
文章来源:https://blog.csdn.net/eases_stone/article/details/135402686
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。