有没有办法在Oracle / PL SQL中使用RSA?

时间:2015-07-02 06:21:44

标签: oracle encryption plsql cryptography rsa

我需要使用RSA(公钥/私钥)加密/解密pl / sql中的数据,但无法找到任何方法。已经检查过dbms_crypto包但似乎它不支持RSA算法。

有没有办法在PL SQL中使用RSA?或者您建议使用哪种非对称算法?

问题描述

在我的情况下,我生成随机密钥(每次迭代几百万),需要在DB中加密存储。然后,在请求时,我需要解密这些密钥并导出为文件。此外,不允许在DB中存储重复的密钥。 RSA似乎非常适合这种情况,但Oracle加密包的免费版本不支持它。需要建议处理这些要求。

1 个答案:

答案 0 :(得分:2)

我的开源Oracle PL / SQL程序crypto4ora可以使用RSA公钥和私钥加密和解密邮件。

有关安装详细信息,请参阅项目页面。这些步骤基本上是下载,运行loadjava,然后运行SQL脚本。

以下是生成密钥,加密和解密的完整示例:

--Generate keys.  Store the private and public key for later.
SELECT CRYPTO.RSA_GENERATE_KEYS(KEY_SIZE => 1024)
  FROM DUAL;

--Encrypt and store encrypted text.
SELECT CRYPTO.RSA_ENCRYPT(PLAIN_TEXT => 'This is my secret message.',
                          PUBLIC_KEY => '<use public key from above>')
  FROM DUAL;

--Decrypt, using the encrypted text and the private key, and it returns the plain text.
SELECT CRYPTO.RSA_DECRYPT(ENCRYPTED_TEXT => '<use output from above>',
                          PRIVATE_KEY    => '<use private key from first step>')
  FROM DUAL;