首页 > 解决方案 > 如何使用 RSA-SH512(或 RSA-SH256)和 Oracle PL/SQL 中签名证书的私钥对字符串进行签名?

问题描述

在 Oracle pl/sql 中,我需要使用带有证书私钥的 RSA-SHA512 或 RSA-SHA256 对字符串进行签名(这是 Web 服务的要求)。

我发现带有参数 src 、 typ 和密钥 src 的 DBMS_CRYPTO.ENCRYPT 函数将等于字符串(转换为原始)密钥将是我的证书的私钥(转换为原始)。

但是在 RSA-SHA512 或 RSA-SHA256 中加密的 key 参数的值应该是多少?可能的值例如 dbms_crypto.encrypt_aes 和 dbms_crypto.encrypt_aes256 但我没有看到像 RSA-SHA 这样的值。

DBMS_CRYPTO 是否可以做到这一点,或者 pl/sql 中是否有其他可用选项?

标签: oracleencryptionplsqlrsadigital-signature

解决方案


您可以通过编写具有此功能的 Java 类并将其加载到 oracle 数据库中来实现此目的。然后创建一个调用 java 方法的 plsql 包。

听起来很复杂,但实际上并不难,而且效果很好,因为这可以通过 JDK 内部来完成。

这是一个示例: https ://docs.oracle.com/en/database/oracle/oracle-database/18/jjdev/calling-Java-from-PL-SQL.html#GUID-499ABE6B-4391-43C8-A527 -74A6C7B0A0FF


推荐阅读