oracle 如何在sqlalchemy的连接字符串中使用加密密码?

8ljdwjyq  于 2023-08-03  发布在  Oracle
关注(0)|答案(3)|浏览(159)

我正在使用sqlalchemy和oracle,但我不想将数据库密码直接存储在连接字符串中,如何存储加密的密码?

qfe3c7zg

qfe3c7zg1#

您可以对字符串进行编码,但编码并不像注解中提到的Gord Thompson那样加密。任何对base64有一点了解的人都可以反转它。

import base64
password = "yourpassword".encode("utf-8")
encoded = base64.b64encode(password)
print(encoded)

字符集
解码它是一个

decoded = base64.decodebytes(encoded).decode('utf-8')
print(decoded)

您可以使用哈希密码:

  • 您可以使用werkzeug.security中的generate_password_hash函数生成密码的安全散列。

代码,

from werkzeug.security import generate_password_hash

password = "your_password_here"

hashed_password = generate_password_hash(password, method='sha256')

cgh8pdjw

cgh8pdjw2#

我猜你正在寻找模块PyCrypto
您可以使用您想要的加密和存储在数据库中的加密文本,并在获取数据后,您可以再次解密它。
下面是PyCrypto的例子:

>>> from Crypto.Hash import SHA256
>>> hash = SHA256.new()
>>> hash.update('message')
>>> hash.digest()
'\xabS\n\x13\xe4Y\x14\x98+y\xf9\xb7\xe3\xfb\xa9\x94\xcf\xd1\xf3\xfb"\xf7\x1c\xea\x1a\xfb\xf0+F\x0cm\x1d'

字符集
有关更多信息,请参阅此documentation

7rtdyuoh

7rtdyuoh3#

加密密码不一定非常有用,因为您的代码必须包含解密的方法。通常,您要做的是将凭据与代码库分开存储,并让应用程序在运行时读取它们。例如 *:

  • 从文件中读取它们
  • 从命令行参数或环境变量中读取它们(注意,有操作系统命令可以从正在运行的进程中检索这些值,或者它们可能被记录)
  • 使用无密码连接机制,例如Unix域套接字(如果可用)
  • 从专用的机密管理系统中获取

您可能还希望考虑加密到数据库的连接,以便密码不会在网络传输过程中暴露。

  • 我不是安全工程师:这些例子并不是详尽无遗的,并且除了所提到的那些漏洞之外,可能还有其他漏洞。

相关问题