我需要使用RSA(公钥/私钥)加密/解密pl / sql中的数据,但无法找到任何方法。已经检查过dbms_crypto包但似乎它不支持RSA算法。
有没有办法在PL SQL中使用RSA?或者您建议使用哪种非对称算法?
问题描述
在我的情况下,我生成随机密钥(每次迭代几百万),需要在DB中加密存储。然后,在请求时,我需要解密这些密钥并导出为文件。此外,不允许在DB中存储重复的密钥。 RSA似乎非常适合这种情况,但Oracle加密包的免费版本不支持它。需要建议处理这些要求。
答案 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;