AS400 - DB2 for i的加密、解密
前言
因为项目要求,需要加密DB2的数据,加密后的数据同步到其他数据库,也能在其他数据库解密
最终通过创建UDF调用Java包获得解决。
一、DB2自带的加密和函数(无法在非DB2中使用)
DB2 for i 自带3个加密函数(点击是IBM文档):
ENCRYPT_AES
ENCRYPT_RC2
ENCRYPT_TDES
参数3个:(1)待加密字符串,(2)密钥,(3)提示语
加密后的是不可读的二进制数据。
解密(点击是文档):
DECRYPT_CHAR
参数2个:密文,密钥
问题:同步到其他平台后,也无法通过公共加密算法解密。因为不了解DB2的加密算法细节,无法非DB2外解密,查询文档、其他论坛均无果,包括咨询了IBM的技术支持。
二、创建UDF,调用JAVA程序解密和加密
1.编写加密、解密Java代码(包括Base64编码)
省略了加密逻辑,网上搜索一堆,有几个细节注意下:
- AS400 V7R3M0版本,带的Java版本是1.7.0,没有java.util.Base64,所以用sun.misc.的。
- 编码后的Base64会自动换行,所以要去除换行符(replaceAll("[\s*\t\n\r]", “”))
import javax.crypto.Cipher<