mysql中加密和解密!

PASSWORD():

创建一个经过加密的密码字符串,适合于插入到MySQL的安全系统。该加密过程不可逆,和unix密码加密过程使用不同的算法。主要用于MySQL的认证系统。  

ENCRYPT(,):

使用UNIX crypt()系统加密字符串,ENCRYPT()函数接收要加密的字符串和(可选的)用于加密过程的salt(一个可以唯一确定口令的字符串,就像钥匙一样),注意,windows上不支持

ENCODE(,)   DECODE(,):

加密解密字符串。该函数有两个参数:被加密或解密的字符串和作为加密或解密基础的密钥。Encode结果是一个二进制字符串,以BLOB类型存储。加密成都相对比较弱

MD5():计算字符串的MD5校验和(128位)

SHA5():计算字符串的SHA5校验和(160位)

以上两个函数返回的校验和是16进制的,适合与认证系统中使用的口令。

Eg:SELECT  *  FROM  USERS  WHERE  NAME=’JOHN’  AND  PASSWORD=MD5(‘MYPASS’);  

例子:  

create table zhao(id int  primary key ,password char(10));

insert into zhao values(1,encode('zhao','jiami'));

select decode(password ,'jiami') from zhao id = 1;  

### 数据加密解密的重要性 在现代数据驱动的应用程序中,确保敏感信息安全至关重要。MySQL 提供了多种内置函数来支持数据的加密解密操作,从而保障用户隐私并满足法律法规的要求[^2]。 ### 使用 `AES_ENCRYPT` `AES_DECRYPT` 进行对称加密 对于需要双向转换的数据(即可以再次读取的内容),推荐采用高级加密标准 (Advanced Encryption Standard, AES),这是一种强健且广泛应用的分组密码算法: #### 加密过程 要将表中的某个字段值进行加密保存,可执行如下 SQL 更新语句: ```sql UPDATE d_debtor_info SET remark1 = TO_BASE64(AES_ENCRYPT(remark1,'自定义密钥')) WHERE id = 1000080703; ``` 这里使用了 `TO_BASE64()` 将二进制形式的结果转化为 Base64 编码字符串以便于存储;而 `'自定义密钥'` 则代表用于加/解密过程中所需的秘密钥匙串[^3]。 #### 解密过程 当需要获取原始未加密的信息时,则可以通过下面这条查询完成相应记录的还原显示: ```sql SELECT CAST(FROM_BASE64(AES_DECRYPT(remark1,'自定义密钥')) AS CHAR) as decrypted_remark1 FROM d_debtor_info WHERE id = 1000080703; ``` 注意,在此命令里加入了类型转换 (`CAST ... AS CHAR`) 来确保最终得到的是字符类型的输出结果。 ### 单向哈希函数简介 如果只是单纯想要验证输入是否匹配已知散列值而不关心恢复原文本的话,那么可以选择不可逆的单向散列方法如 MD5 或 SHA 系列: - **MD5**: 调用方式简单直接——`MD5('待处理字符串')`; - **SHA**: 同样易于上手——`SHA('待处理字符串')` 或者更安全的选择 `SHA2('待处理字符串',长度)`[^4]。 这类机制特别适合用来校验登录口令等场景下的身份认证环节。 ### 安全提示 尽管上述手段能够有效提升安全性水平,但在实际部署前仍需考虑更多因素,比如密钥管理策略、访问控制措施以及定期审查日志文件等等[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值