广州总部电话:020-85564311
广州总部电话:020-85564311
20年
互联网应用服务商
请输入搜索关键词
知识库 知识库

优网知识库

探索行业前沿,共享知识宝库

使用数据库的加密解密函数

发布日期:2025-08-04 08:45:00 浏览次数: 808 来源:老王的学习日志
推荐语
数据库自带的加密解密函数,让敏感数据存储更简单高效,省去额外类库调用的麻烦。

核心内容:
1. 敏感数据加密的必要性与分类(单向/双向)
2. MySQL与PostgreSQL实现加密解密的函数对比
3. AES-128-ECB模式的具体应用示例
小优 网站建设顾问
专业来源于二十年的积累,用心让我们做到更好!

 简单的加密/解密处理,就偷点懒,直接用数据库自带的函数了……


工作中,会有一些数据,往数据库里面存储的时候,不能以明文的方式存储,比如手机号码啊、用户密码之类的。


用户密码之类的,单向的,还好办,只加密,不解密的。

注册的时候,做一下加密,然后存储到数据库。

登录的时候,是拿输入的密码,去做加密的操作,然后,拿加密的结果,与数据库里面,注册的时候的加密结果,做对比,一样的话,就认为是密码正确,否则就是密码不正确。


而手机之类的,是双向的了,存储的时候,要加密,读取的时候,要解密。

也就是,写入的时候,需要做一下加密的操作,然后再存储到数据库里面。

读取的时候,需要从数据库读出来了,做一下解密的操作,再拿去做后续的处理。


一般来说,加密/解密的处理,都是用编程语言来做的。

比如 Java 、 C#、Python 之类的语言,来处理。

就是要调用各自的 加密/解密的 类库,来处理了。


但是,想一想,一些简单的加密函数,如果数据库自身就带有相关函数的话。

那编程语言, 直接调数据库的函数就完了,不需要去引用类库,然后再调用了。



看了一下,MySQL 自带了一些, PostgreSQL,是需要安装一个 pgcrypto 扩展。


下面是一些简单的例子


 

AES-128-ECB 模式 - 加密

mysql

SET block_encryption_mode = 'aes-128-ecb';

SELECT
  to_base64(
    AES_ENCRYPT(
      '测试需要加密的文本:12312345678', 
      '0123456789ABCDEF'));

postgresql

SELECT 
  encode(
    encrypt(
      convert_to('测试需要加密的文本:12312345678', 'UTF8'),
      convert_to('0123456789ABCDEF', 'UTF8'),
      'aes-ecb/pad:pkcs'), 'base64');

结果都是:

Q5ZotPBdieWSWbhXver3gEm9xG7RC5MjCN2gJ3+LYM/C7YrxZtZKxD5NVwKt7TiB

AES-128-ECB 模式 - 解密

mysql

SET block_encryption_mode = 'aes-128-ecb';

SELECT
  CONVERT(
    AES_DECRYPT(
      FROM_BASE64('Q5ZotPBdieWSWbhXver3gEm9xG7RC5MjCN2gJ3+LYM/C7YrxZtZKxD5NVwKt7TiB'),
      '0123456789ABCDEF') USING utf8);
      

postgresql


SELECT 
  convert_from(
    decrypt(
      decode('Q5ZotPBdieWSWbhXver3gEm9xG7RC5MjCN2gJ3+LYM/C7YrxZtZKxD5NVwKt7TiB', 'base64'),
      convert_to('0123456789ABCDEF', 'UTF8'),
      'aes-ecb/pad:pkcs'), 'UTF8');

结果都是:

测试需要加密的文本:12312345678

AES-128-CBC 模式 - 加密

mysql

SET block_encryption_mode = 'aes-128-cbc';

SELECT
  to_base64(
    AES_ENCRYPT(
      '测试需要加密的文本:12312345678', 
      '0123456789ABCDEF', 
      '0987654321123456'));

postgresql

SELECT 
  encode(
    encrypt_iv(
      convert_to('测试需要加密的文本:12312345678', 'UTF8'),
      convert_to('0123456789ABCDEF', 'UTF8'),
      convert_to('0987654321123456', 'UTF8'),
      'aes-cbc/pad:pkcs'), 'base64');

结果都是:

n18n8PDiMi/F950WLAcEQUmc3yaECLX/Rlpp4OKiuDlFpA/6LFsV5hrDtvMqSTd2

AES-128-CBC 模式 - 解密

mysql

SET block_encryption_mode = 'aes-128-cbc';

SELECT
  CONVERT(
    AES_DECRYPT(
      FROM_BASE64('n18n8PDiMi/F950WLAcEQUmc3yaECLX/Rlpp4OKiuDlFpA/6LFsV5hrDtvMqSTd2'),
      '0123456789ABCDEF', 
      '0987654321123456') USING utf8);

postgresql

SELECT 
  convert_from(
    decrypt_iv(
      decode('n18n8PDiMi/F950WLAcEQUmc3yaECLX/Rlpp4OKiuDlFpA/6LFsV5hrDtvMqSTd2', 'base64'),
      convert_to('0123456789ABCDEF', 'UTF8'),
      convert_to('0987654321123456', 'UTF8'),
      'aes-cbc/pad:pkcs'), 'UTF8');

结果都是:

测试需要加密的文本:12312345678

 






优网科技,优秀企业首选的互联网供应服务商

优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!

优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、微信小程序定制开发、移动端应用(手机站APP开发)、微信定制开发(微信官网、微信商城、企业微信)等一系列互联网应用服务。


我要投稿

姓名

文章链接

提交即表示你已阅读并同意《个人信息保护声明》

专属顾问 专属顾问
扫码咨询您的优网专属顾问!
专属顾问
马上咨询
扫一扫马上咨询
扫一扫马上咨询

扫一扫马上咨询