使用 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 加密数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 DBMS_CRYPTO 但使用 dbms_obfuscation_toolkit 时出错