使用 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;
免责声明:我在滴滴工作
我想在将字符串发送给我的客户之前对其进行加密。 客户给了我一个 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;
免责声明:我在滴滴工作