【问题标题】:Is there any way to use RSA in the Oracle/PL SQL?有没有办法在 Oracle/PL SQL 中使用 RSA?
【发布时间】:2015-07-02 06:21:43
【问题描述】:

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

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

问题描述

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

【问题讨论】:

  • 如果您想为此付费,Oracle 高级安全选项提供RSA RC4 algorithm。否则,您需要更多地解释您的用例。 RSA 不适用于大量数据,这使得它在数据库应用程序中的相关性很窄。
  • @APC 感谢您的评论。其实我正在寻找免费工具来解决这个问题。编辑问题并添加问题描述。
  • 如果您决定,您可以检查的另一个商业产品是 DidiSoft ORA_RSA didisoft.com/ora-rsa/tutorial/encrypting

标签: oracle encryption plsql cryptography rsa


【解决方案1】:

我的开源 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;

【讨论】:

    猜你喜欢
    • 2010-12-01
    • 2011-05-04
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2010-10-29
    相关资源
    最近更新 更多