第一步:安装PL/SQL
这一步百度下载安装包就好
第二步:创建java source
1.左上角创建java souce脚本
2.将以下代码粘贴进去
create or replace and compile java source named md5util as
import java.security.MessageDigest;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.codec.binary.Base64;
public class MD5Util
{
public static String encrypt(String s)
{
char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd','e', 'f'};
try {
byte[] strTemp = s.getBytes();
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.digest();
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
}
catch (Exception e){
return null;
}
}
public static String encryptField(String sSrc,String ckey) throws Exception {
byte[] raw = ckey.getBytes("utf-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(sSrc.getBytes("utf-8"));
return new Base64().encodeToString(encrypted);
}
public static String decryptField(String sSrc,String ckey) throws Exception {
byte[] raw = ckey.getBytes("utf-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] encrypted1 = new Base64().decode(sSrc);
byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original,"utf-8");
return originalString;
}
}
3.可以看到上面的代码中还引入了别的java包的东西,所以需要将jar包在这里能够引入,首先将引入的java包放到一个位置,打开dos命令窗口执行以下命令
loadjava -r -f -o -user system/Db123456 D:\commons-codec-1.12.jar
4.选择PL/SQL上方的编译小三角
第三步:创建函数
1.新建一个sql窗口
2.将下方sql放进去执行,依然是执行顶部的小三角执行按钮
create or replace function md5encrypt(s varchar2)
return varchar2 as
language java name 'MD5Util.encrypt(java.lang.String) return java.lang.String';
create or replace function encryptField(s varchar2,k varchar2)
return varchar2 as
language java name 'MD5Util.encryptField(java.lang.String,java.lang.String) return java.lang.String';
create or replace function decryptField(s varchar2,k varchar2)
return varchar2 as
language java name 'MD5Util.decryptField(java.lang.String,java.lang.String) return java.lang.String';
3.可以测试函数是否可以正常使用了
-- 测试执行(如果碰到错误或者提示就刷新数据库连接再执行)
-- 测试【加密数据】
select encryptField('25.366','AD42F6697B035B75') as test from dual;
-- 测试【解密数据】
select decryptField('+6HKNK9HY0DbkvfHj4svfQ==','AD42F6697B035B75') as test from dual;