由于以前设计的结构很差,我必须使用的当前数据库将用户密码存储为文本。
现在,我正在构建一个必须使用这些密码的前端部分,我当然不想发送未加密的密码。
我的想法是编写一个 Oracle 函数来加密和解密文本密码,并在将返回加密数据的存储过程中使用这些函数。
Oracle 这样做的最佳方法是什么?
最佳答案
如果您想编写自己的函数来加密和解密数据,您只需调用 DBMS_CRYPTO encrypt
和 decrypt
具有适当参数的方法(即选择您的加密算法、您的 key 等)。
当然,如果您编写自己的例程,假设您将 key 存储在数据库中或数据库可以访问的某个地方,那么您就没有做太多的安全工作。通过网络发送未加密的密码是不好的,但将未加密的密码存储在数据库中通常更糟糕(如果数据库中有 decrypt
方法可以访问解密数据的 key ,则存储加密的密码)。从数据库中窃取数据通常比嗅探通过网络发送的数据以找到密码要容易得多。
当然,正确的答案是重新构建系统,以便您根本不存储密码。您应该存储不可逆的密码哈希(您也可以使用 DBMS_CRYPTO
包生成)。
关于oracle - Oracle 函数中的加密/解密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12058356/