oracle - Oracle 函数中的加密/解密密码

标签 oracle encryption plsql

由于以前设计的结构很差,我必须使用的当前数据库将用户密码存储为文本。

现在,我正在构建一个必须使用这些密码的前端部分,我当然不想发送未加密的密码。

我的想法是编写一个 Oracle 函数来加密和解密文本密码,并在将返回加密数据的存储过程中使用这些函数。

Oracle 这样做的最佳方法是什么?

最佳答案

如果您想编写自己的函数来加密和解密数据,您只需调用 DBMS_CRYPTO encryptdecrypt具有适当参数的方法(即选择您的加密算法、您的 key 等)。

当然,如果您编写自己的例程,假设您将 key 存储在数据库中或数据库可以访问的某个地方,那么您就没有做太多的安全工作。通过网络发送未加密的密码是不好的,但将未加密的密码存储在数据库中通常更糟糕(如果数据库中有 decrypt 方法可以访问解密数据的 key ,则存储加密的密码)。从数据库中窃取数据通常比嗅探通过网络发送的数据以找到密码要容易得多。

当然,正确的答案是重新构建系统,以便您根本不存储密码。您应该存储不可逆的密码哈希(您也可以使用 DBMS_CRYPTO 包生成)。

关于oracle - Oracle 函数中的加密/解密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12058356/

相关文章:

sql - 如何在 SQL 列名中使用符号?

Java密码加密

go - 如何处理 NewCB​​CDecrypter 示例中的无效 key ?

sql - ORA-00917 在 sql 查询中转义撇号

Sql查询优化和分析

java - PL/SQL 存储过程不会在 Java 中执行,但可以在 Oracle 中运行

sql - 如何声明变量并在同一个 Oracle SQL 脚本中使用它?

java - 通过 JMS 使用 Oracle 高级队列 : NPE thrown at AQjmsProducer. jdbcEnqueue

Oracle Text 查询重写模板不起作用

c# - .NET 4.0 中大量的私钥加密