AS400 - DB2 for i的加密、解密

本文介绍了如何在AS400上利用DB2自带的加密函数以及创建UDF调用Java程序实现数据加密解密。由于DB2自带函数无法在非DB2环境中解密,作者通过编写Java代码并编译为UDF,成功实现了在不同平台间的加密数据同步与解密。关键步骤包括编写Java加密解密代码、满足UDF调用要求、编译Java程序及创建DB2 UDF。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

因为项目要求,需要加密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编码)

省略了加密逻辑,网上搜索一堆,有几个细节注意下:

  1. AS400 V7R3M0版本,带的Java版本是1.7.0,没有java.util.Base64,所以用sun.misc.的。
  2. 编码后的Base64会自动换行,所以要去除换行符(replaceAll("[\s*\t\n\r]", “”))
import javax.crypto.Cipher<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值