Java 具有 RSA 签名的存储过程 SHA256 不可用

Java stored procedure SHA256 with RSA Signature not available

我对 Oracle 数据库版本 "Oracle Database 11g Enterprise Edition 11.2.0.3.0 64bit Production" 上的 java 存储过程有疑问。

我需要使用 sha256withRsa 来签署一些数据。在这种情况下,我使用了 java 存储过程。相同的源代码在 Netbeans ide 和 JDK1.5 或 JDK1.7(尝试更改)上工作。

当我在数据库 side 上执行相同的代码时,我得到:

ORA-29532:Java 调用被未捕获的 Java 异常终止:java.security.NoSuchAlgorithmException:SHA256WithRSAEncryption 签名不可用

这行代码是原因:

签名 podpis = Signature.getInstance("SHA256withRSA");

如何解决这个问题?

数据库 side 上的

Java 是:JDK 1.5.0_10

运行 这个 class 在 netbeans 和 plsql 中。要在 plsql 执行中查看输出。 set serveroutput on; dbms_java.set_output(20000); 而您正在寻找 Signature.SHA256withRSA。

import java.security.Provider;
import java.security.Security;
import java.util.Enumeration;

/**
 *
 * @author alukasiewicz
 */
public class TestSignature {

   public static void print() throws Exception {
    try {
        Provider p[] = Security.getProviders();
      for (int i = 0; i < p.length; i++) {
          System.out.println(p[i]);
          for (Enumeration e = p[i].keys(); e.hasMoreElements();)
              System.out.println("\t" + e.nextElement());
      }
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}