我希望在将字符串发送到我的客户端之前对其进行加密。 客户端给了我一个RSA公钥。 有一个512字节的Modulus和6个字节的Pub。进出口。 (所有十六进制)。
通常我正在运行Cobol来生成此输出文件。但我不认为Cobol有任何api /呼叫加密。 所以我打算调用一个Oracle过程/函数来执行此操作。
问题:如何在Oracle PL / SQL(或SQL)中使用RSA公钥加密字符串?
答案 0 :(得分:3)
非对称加密中使用的RSA密钥。 Oracle在两点提供非对称加密:
并且需要Oracle Advanced Security Option。 这种添加只是在上面描述的两种情况下执行,而不是提供API。
Oracle提供了对称加密的工具 - 请查看包DBMS_CRYPTO。您也可以使用存储过程。
答案 1 :(得分:0)
商业DidiSoft ORA_PGP软件包提供了如下所示的合适方法:
DECLARE
public_key_modulus CLOB := 'c24e5473164291964e247b179cf7590208bc96140ee6d900f531ce3d8d82b8a89a19e8c238222b8d10d943cdc6006adf094c84ca40a74d7e3abe91da690e72d399e79423826d95cd3a2f5b832e38b586078ddf5e6dea0ded39fd221d5772b7876295c1c36a79c253476e5344d7861e8e2bf1c71edc19ee57310a8e4d83350397';
public_key_exponent CLOB := '10001';
encrypted_data raw(32000);
BEGIN
-- RSA Encrypt
encrypted_data := ORA_RSA.ENCRYPT_WITH_MODULUS(message => UTL_I18N.STRING_TO_RAW('Hello World', 'AL32UTF8'),
public_key_modulus => DBMS_LOB.substr(public_key_modulus),
public_key_exponent => DBMS_LOB.substr(public_key_exponent));
END;
免责声明:我为DidiSoft工作。