当前位置: 首页 > wzjs >正文

广州安全教育平台注册seo网络优化是什么工作

广州安全教育平台注册,seo网络优化是什么工作,wordpress网站如何制作,雷州市住房和城乡规划建设局网站对 userInfo 表的 phone 字段实现加密和解密的完整 MySQL 方案,加密后的数据以字符串形式存储: 一.测试截图 密文显示: 解密显示: 二.实现步骤 1. 确保字段长度足够 由于加密后的字符串可能比原数据更长,需调整 ph…

对 userInfo 表的 phone 字段实现加密和解密的完整 MySQL 方案,加密后的数据以字符串形式存储:

一.测试截图

密文显示:

在这里插入图片描述

解密显示:

在这里插入图片描述

二.实现步骤

1. 确保字段长度足够

由于加密后的字符串可能比原数据更长,需调整 phone 字段长度(例如 varchar(255) 足够存储 AES 加密后的 Base64 字符串):

-- 保持原表结构不变(phone 字段为 varchar(255))
CREATE TABLE `userInfo` (`card` varchar(255) DEFAULT NULL,`phone` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2. 定义加密密钥

在 MySQL 会话中设置用户变量(示例密钥为 my_secret_key_123,实际生产环境应使用安全密钥):

SET @encryption_key = 'my_secret_key_123'; -- 密钥长度需符合 AES 要求(如 16/24/32 字节)

3. 创建触发器实现自动加密

3.1 INSERT 触发器

插入数据时自动加密 phone 字段并转换为 Base64 字符串:

DELIMITER $$CREATE TRIGGER before_userInfo_insert
BEFORE INSERT ON userInfo
FOR EACH ROW
BEGIN-- 加密并转换为 Base64 字符串SET NEW.phone = TO_BASE64(AES_ENCRYPT(NEW.phone, @encryption_key));
END$$DELIMITER ;
3.2 UPDATE 触发器

更新数据时自动加密 phone 字段:

DELIMITER $$CREATE TRIGGER before_userInfo_update
BEFORE UPDATE ON userInfo
FOR EACH ROW
BEGINSET NEW.phone = TO_BASE64(AES_ENCRYPT(NEW.phone, @encryption_key));
END$$DELIMITER ;

4. 查询时自动解密

使用 AES_DECRYPTFROM_BASE64 函数解密数据:

SELECT card, CAST(AES_DECRYPT(FROM_BASE64(phone), @encryption_key) AS CHAR) AS decrypted_phone 
FROM userInfo;

5. 验证测试

插入加密数据
INSERT INTO userInfo (card, phone) 
VALUES ('card_001', '13800138000'); 
查询数据(明文显示)
SELECT card, CAST(AES_DECRYPT(FROM_BASE64(phone), @encryption_key) AS CHAR) AS phone 
FROM userInfo;

输出

+----------+-------------+
| card     | phone       |
+----------+-------------+
| card_001 | 13800138000 |
+----------+-------------+

6. 完整操作流程示例

步骤 1:插入数据(自动加密)
-- 插入数据(明文)
INSERT INTO userInfo (card, phone) VALUES ('card_002', '13900139000');-- 直接查询表数据(查看密文)
SELECT * FROM userInfo;

输出(加密后的 Base64 字符串):

+----------+----------------------------------+
| card     | phone                            |
+----------+----------------------------------+
| card_002 | k4lWZ3sD4Tz7X1X8hJjKbQ==        | -- 示例值,实际值更长
+----------+----------------------------------+
步骤 2:解密查询
SELECT card, CAST(AES_DECRYPT(FROM_BASE64(phone), @encryption_key) AS CHAR) AS phone 
FROM userInfo;

输出

+----------+-------------+
| card     | phone       |
+----------+-------------+
| card_002 | 13900139000 |
+----------+-------------+

注意事项

  1. 密钥管理

    • 示例中硬编码密钥不安全,生产环境应通过外部配置或密钥管理服务动态注入密钥。
    • 密钥需符合 AES 算法要求(如 16/24/32 字节长度)。
  2. 字段长度

    • Base64 编码会增加约 33% 的长度,需确保 phone 字段足够长(如原数据 11 位,加密后至少需 varchar(24))。
  3. 性能影响

    • 高频写入场景中,触发器可能增加数据库负载。
  4. 编码一致性

    • 必须统一使用 TO_BASE64FROM_BASE64 确保编码/解码一致。

扩展方案:存储过程管理加密

DELIMITER $$-- 加密存储过程
CREATE PROCEDURE InsertEncryptedUser(IN p_card VARCHAR(255),IN p_phone VARCHAR(255)
)
BEGININSERT INTO userInfo (card, phone)VALUES (p_card, TO_BASE64(AES_ENCRYPT(p_phone, @encryption_key)));
END$$-- 解密存储过程
CREATE PROCEDURE GetDecryptedUsers()
BEGINSELECT card, CAST(AES_DECRYPT(FROM_BASE64(phone), @encryption_key) AS CHAR) AS phone FROM userInfo;
END$$DELIMITER ;-- 调用示例
CALL InsertEncryptedUser('card_003', '15900159000');
CALL GetDecryptedUsers();

总结

操作方法
自动加密通过 BEFORE INSERT/UPDATE 触发器调用 AES_ENCRYPT + TO_BASE64
手动解密查询时使用 FROM_BASE64 + AES_DECRYPT 并转换为 CHAR
安全增强避免硬编码密钥,结合应用层或外部服务管理密钥

按此方案实现后,phone 字段在存储时自动加密为字符串,查询时手动解密,满足字符串存储需求。

以下是触发器相关命令:

#删除触发器DROP TRIGGER IF EXISTS before_insert_userInfo;#查看所有触发器SHOW TRIGGERS LIKE 'userInfo';

希望这篇文章对你有所帮助!如果觉得不错,别忘了点赞收藏哦!


文章转载自:

http://pgOzR365.kkgbs.cn
http://Mv6sRljY.kkgbs.cn
http://0yOsqC9T.kkgbs.cn
http://TyY3EuUD.kkgbs.cn
http://LV3VUOfK.kkgbs.cn
http://Cz3wAOOF.kkgbs.cn
http://awwBo7cF.kkgbs.cn
http://yG4bzie7.kkgbs.cn
http://lwFiyA5E.kkgbs.cn
http://cbCPJkR2.kkgbs.cn
http://YZzEsJgy.kkgbs.cn
http://kLqAmjjB.kkgbs.cn
http://KzYs8J7T.kkgbs.cn
http://AmQ4mmCz.kkgbs.cn
http://1A0PSHTa.kkgbs.cn
http://Zq8dyEbh.kkgbs.cn
http://f9bfZiR2.kkgbs.cn
http://SSFLkPRx.kkgbs.cn
http://6u1fx901.kkgbs.cn
http://OR2SXOuQ.kkgbs.cn
http://B5TvwzwS.kkgbs.cn
http://RTf7QgXr.kkgbs.cn
http://bB6c2PVY.kkgbs.cn
http://OkywCq3e.kkgbs.cn
http://c6DEW7dC.kkgbs.cn
http://aZ5b58xv.kkgbs.cn
http://UHreLGBR.kkgbs.cn
http://VCunryxe.kkgbs.cn
http://ujWjfviT.kkgbs.cn
http://ok5aZsKf.kkgbs.cn
http://www.dtcms.com/wzjs/652432.html

相关文章:

  • 关于网站建设的一些事苏州企业网站制作服务
  • 网站的稳定性怎么建国外网站
  • 网站分享的功能怎么做学校网站建设软件推荐
  • 松原手机网站开发在百度网上做广告需要多少钱
  • 印江建设局网站网站建设与维护是什么内容
  • 西安做百度网站的外贸网页制作公司哪家好
  • 装修行业网站建设网络规划设计师培训
  • 柳州微网站开发广州营销型网站建设团队
  • 网站服务器崩溃自助外贸网站制作
  • 河南省建设科技协会网站完整个人网页html
  • 上海网站设计与开发公司sem竞价推广
  • 制作网站公司哪里好批量入侵wordpress
  • 网站建设视频教程网站兼职小时工
  • 个人网站要不要备案哈尔滨今天重大新闻
  • 住房和城乡建设厅门户网站做跨境电商需要什么条件
  • 温州网站开发培训如何在360网站网页上做笔记
  • php mysql网站开发全程实例凡科网站建设多少钱
  • 做网站的合同范文资讯类网站建设资质要求
  • 叫人做国外公司网站让老外做好还是国内人做好综合门户型网站有哪些
  • 移动版网站建设的必要性怎么建设卡盟网站
  • 网站域名免费手机网站开放
  • 网站建设与维护的案例wordpress+qq微信登陆
  • 新闻列表做的最好的网站网站建设自我总结
  • 购物网站的做最新网站推广方法
  • 在线花钱做网站网站建设平台
  • 建立网站有怎么用途抖音免费推广网站
  • 免费网站推广产品东营企业网站排名
  • 我自己做网站建站平台营销
  • 手机端网站建设备案网站建设与设计方案
  • 电子商务网站建设目标分析jsp做网站步骤