java - Java 中的重复 Oracle DES 加密

标签 java oracle encryption

我最近问了一个有关 Oracle 加密的问题。在为自己寻找解决方案的过程中,我决定将加密(好吧,混淆)转移到应用程序端来执行某些任务。

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

我希望加密与数据库已经执行的操作兼容,但找不到准确描述 Oracle 正在执行的操作的文档。我如何在 Java 中复制它?

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 的不同。

最佳答案

我发现这个作品:

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);

缺少的部分是初始化 vector (ips),它必须是 8 个零。当您在 Java 中使用 null 时,您会得到不同的结果。

关于java - Java 中的重复 Oracle DES 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/115503/

相关文章:

c++ - 在 OpenSSL 上使用 Crypto++ 生成的 RSA key

Java多线程: How to use multi-threading in different ArrayList containing record info?

java - nextLine() 如何丢弃此代码中的输入?

java - 带有 Oracle com.zaxxer.hikari.pool.HikariProxyCallableStatement 的 HikariCP 无法转换为 oracle.jdbc.OracleCallableStatement

sql - JPA/hibernate : on delete set null

javascript - "Invalid AES Block Size"SJCL解密

java - url 路径的模式匹配

java - nio上下文中的请求-响应同步/匹配

oracle - PL/SQL-拆分循环以加载不良数据

c++ - 字母加密程序