为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:CentOS7
【CPU】:Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz
【问题描述】*:java项目,需要加密存储敏感数据,之前使用mysql,是以hex(AES_ENCRYPT('敏感数据', 'key'))的方式存储的,解密使用AES_DECRYPT(unhex('加密字符串'), 'key')获取数据,达梦没有AES_ENCRYPT、AES_DECRYPT函数,因此我想通过其他方式实现这样的逻辑,考虑了两个方式:1.外部函数(java);2.mysql解密后到达梦内加密,比较倾向于第一种,希望不修改原库表数据及代码。
尝试使用外部函数时,如上配置是可行的,但是需要把原代码中 AES_DECRYPT(unhex('加密字符串'), 'key') 改为 AES_DECRYPT('加密字符串', 'key'),不希望改动原代码,所以就想改造下方法,只实现AES_DECRYPT的部分,入参直接接收unhex的结果,但是怎么改数据类型都不行,在达梦中执行这个sql SELECT AES_DECRYPT(unhex('加密字符串'), 'key') 时应该怎么定义外部函数的参数数据类型?
达梦的存储加密章节,有相关加密函数的介绍。
支持对VARBINARY 类型数据的加密
https://eco.dameng.com/document/dm/zh-cn/pm/storage-encryption.html#7.3%20%E9%9D%9E%E9%80%8F%E6%98%8E%E5%8A%A0%E5%AF%86