PG数据库实现AES加密和模糊查询

背景:公司的一个项目要过等保3级,被测评机构扫描出来,一些敏感数据未加密存储,例如:手机号、邮箱、身份证号码、卡号等,要求整改

思路:对涉及到的界面和字段,在添加、修改的通用类中,针对这些字段,调用AES加密函数的方法。对涉及到的界面和字段的显示列表和详情界面中,调用AES解密函数的方法。如果模糊查询条件中,有涉及到加密字段的话,需要在DAO层拼写sql语句时,先把被查询的加密字段做解密处理后,拼写成模糊查询(like '%?%')

参考资料:pgsql加解密数据,使用AES加解密_pg数据库加密方式_资深bug开发工程师的博客-CSDN博客

chatgpt

 针对涉及到的界面和字段,在添加、修改的通用类中,针对这些字段,调用AES加密函数的方法。chatgpt给出了参考的示例代码:如下

import org.springframework.stereotype.Component;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
im
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,您需要了解以下几个概念: - AES:高级加密标准,是一种对称加密算法,用于加密数据。 - ECB:电子密码本模式,是一种加密模式,将明文分成若干个固定长度的块,每个块独立加密。 - PKCS#7:公钥密码标准,是一种填充方式,用于将数据填充到指定长度,保证数据长度符合加密算法要求。 接下来,您可以按照以下步骤实现PG数据库的加密: 1. 生成一个AES密钥,可以使用Python的Crypto库中的Random模块生成随机数作为密钥。 2. 使用ECB模式对明文进行加密,可以使用Python的Crypto库中的AES模块进行加密,具体可以参考以下代码: ```python from Crypto.Cipher import AES # 设置密钥和加密模式 key = b'0123456789abcdef' cipher = AES.new(key, AES.MODE_ECB) # 加密明文 plaintext = b'This is the plaintext to be encrypted' ciphertext = cipher.encrypt(plaintext) ``` 3. 对加密后的密文进行PKCS#7填充,可以使用Python的Crypto库中的Padding模块进行填充,具体可以参考以下代码: ```python from Crypto.Util.Padding import pad # 填充密文 block_size = AES.block_size padded_ciphertext = pad(ciphertext, block_size, style='pkcs7') ``` 4. 将填充后的密文保存到PG数据库中。 需要注意的是,在进行解密时,需要按照相反的流程进行操作,先对填充后的密文进行解密,再对解密后的明文进行去填充操作,最后得到原始的明文。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值