使用 PL/SQL 或 Cobol 的 RSA 加密

RSA Encryption using PL/SQL or Cobol

我想在将字符串发送给我的客户之前对其进行加密。 客户给了我一个 RSA Public 密钥。 有一个 512 字节的 Modulus 和 6 字节的 Pub。 Exp。 (全十六进制)。

通常我是运行 Cobol 来生成这个输出文件。但我认为 Cobol 没有任何 api/call 可以加密。 所以我打算打电话给 Oracle procedure/function 来做这件事。

问题:如何在 Oracle PL/SQL(或 SQL)中使用 RSA public 密钥加密字符串?

RSA 密钥用于非对称加密。 Oracle在两点上提供了非对称加密:

  • 在客户端和数据库之间传输数据时
  • 用于用户身份验证

为此需要 Oracle Advanced Security Option。 这个加法只是简单的在上面描述的两种情况下执行,并没有提供API.

Oracle 提供了用于对称加密的工具 - 在程序包 DBMS_CRYPTO 中查找。您也可以使用存储过程。

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;

免责声明:我在滴滴工作