由于以前设计不合理的结构,我必须使用的当前数据库将用户的密码存储为文本.
现在,我正在构建一个必须使用这些密码的前端部分,我当然不希望发送未加密的密码.
我的想法是编写一个Oracle函数来加密和解密文本密码,并在存储过程中使用这些函数来返回加密数据.
Oracle中最好的方法是什么?
解决方法
@H_404_18@ 如果您想编写自己的函数来加密和解密数据,您只需要使用适当的参数调用 DBMS_CRYPTO加密和解密方法(即选择加密算法,密钥等).当然,如果您编写自己的例程,假设您将密钥存储在数据库中或数据库可以访问的某个位置,那么您在安全性方面做得并不多.通过网络发送未加密的密码是不好的,但在数据库中存储未加密的密码通常要糟糕得多(如果数据库中有解密方法可以访问密钥来解密数据,则加密密码).从数据库中窃取数据通常要比通过网络发送数据以便查找密码容易得多.
当然,正确的答案是重新架构系统,以便您根本不存储密码.您应该存储不可逆的密码哈希值(您也可以使用DBMS_CRYPTO包生成).