使用PL / SQL或Cobol的RSA加密

时间:2015-04-30 12:02:05

标签: sql oracle plsql cobol

我希望在将字符串发送到我的客户端之前对其进行加密。 客户端给了我一个RSA公钥。 有一个512字节的Modulus和6个字节的Pub。进出口。 (所有十六进制)。

通常我正在运行Cobol来生成此输出文件。但我不认为Cobol有任何api /呼叫加密。 所以我打算调用一个Oracle过程/函数来执行此操作。

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

2 个答案:

答案 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工作。