首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中复制Oracle DES加密

在Java中复制Oracle DES加密
EN

Stack Overflow用户
提问于 2008-09-22 15:26:15
回答 2查看 2.3K关注 0票数 1

我最近问了一个关于Oracle加密的问题。在为自己找到解决方案的过程中,我决定将加密(好吧,模糊处理)转移到应用程序端,以完成某些任务。

我的问题是,数据库已经在以某种方式加密数据,我需要Java代码来复制该功能,以便一个系统加密的文本可以被另一个系统解密,反之亦然。

我希望加密与数据库已经在做的事情兼容,但是找不到确切描述Oracle正在做什么的文档。我如何在Java中复制它?

代码语言:javascript
复制
dbms_obfuscation_toolkit.DESEncrypt(
  input_string => v_string,
  key_string => key_string,
  encrypted_string => encrypted_string );
RETURN UTL_RAW.CAST_TO_RAW(encrypted_string);

不管我怎么尝试,Java DES加密似乎与Oracle的加密不同。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-09-22 15:30:57

我发现这是可行的:

代码语言:javascript
复制
KeySpec ks = new DESKeySpec(new byte[] {'s','e','c','r','e','t','!','!'});
SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
SecretKey sk = skf.generateSecret(ks);
Cipher c = Cipher.getInstance("DES/CBC/NoPadding");
IvParameterSpec ips = new IvParameterSpec(new byte[] {0,0,0,0,0,0,0,0});
c.init(Cipher.ENCRYPT, sk, ips);
// or
c.init(Cipher.DECRYPT, sk, ips);

缺少的部分是Initialization Vector (ips),它必须是8个零。当你在Java中使用null时,你会得到一些不同的东西。

票数 2
EN

Stack Overflow用户

发布于 2008-09-22 17:27:32

在数据库中使用Java将是另一种方法,它将(应该!)确保代码(以及结果)是相同的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/115503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档