使用 DBMS_CRYPTO 加密数据

Posted

技术标签:

【中文标题】使用 DBMS_CRYPTO 加密数据【英文标题】:Use DBMS_CRYPTO to encrypt data 【发布时间】:2008-11-14 09:01:59 【问题描述】:

我目前正在使用 Oracle 10g。我使用 DBMS_CRYPTO 包加密用户登录密码。为了加密或解密数据,我必须有一个密钥。那么我应该把密钥放在哪里以便对其他开发人员隐藏它,或者是否有另一种方法可以加密数据而无法解密?

在 SQL Server 中,我只是使用 PWDENCRYPT 函数进行加密,当我想比较用户输入的数据是否正确时,我使用 PWDCOMPARE。请建议。谢谢。

【问题讨论】:

【参考方案1】:

为了向其他开发人员隐藏密钥,希望这篇文章对您有所帮助,其中包含有关密钥管理的部分:

http://www.oracle.com/technology/oramag/oracle/05-jan/o15security.html

要加密数据但无法将其解密,您可能希望查看one way hashes。 Oracle 以 DBMS_CRYPTO.HASH 的形式提供此功能,使用简单(如 here 所述):

SQL> select SYS.DBMS_CRYPTO.HASH('FFFFFF',1) from dual;
7D91F6D9BE28A9756B0D2F11D3AF4F0C

然后您只将哈希存储在数据库中 - 如果用户输入的哈希与您存储的哈希匹配,您可以验证密码,但您无法以任何方式检索密码。

【讨论】:

以上是关于使用 DBMS_CRYPTO 加密数据的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库加密脚本

MySql和Oracle加密函数兼容性

使用 DBMS_CRYPTO 但使用 dbms_obfuscation_toolkit 时出错

plsql实现DES对称加密

Oracle DBMS_CRYPTO.ENCRYPT AES256 的初始化向量长度

Oracle 加解密教程