【问题标题】:How to encrypt a value in ini file如何加密ini文件中的值
【发布时间】:2010-09-28 00:48:35
【问题描述】:

在 INI 文件中加密值的最佳方法是什么?

使用加密/解密密钥??

【问题讨论】:

  • 可能值得注意的是,如果您在 Windows 世界中,GetProfileString 和 WriteProfileString(用于与经典 .ini 文件交互的 API)都已被弃用了大约十年。仅在进行 16 位兼容性时才使用它们。

标签: encryption file ini


【解决方案1】:

出于什么目的?安全?

如果您尝试(例如)加密明文密码,您可能应该使用 PKI 的一些实现。但请记住,密钥管理将成为您的问题。仅仅加密值并不是万能的,因为 ini 文件很可能位于本地主机的文件系统上,大概是您必须存储密钥对的同一个地方。您只是将问题抽象到了一层。他们将无法直接读取您的加密密码,但如果他们能找到您存储密钥对的位置,他们就可以自行解密。

【讨论】:

    【解决方案2】:

    有什么作用?你想保护或混淆什么?

    您可以使用适用于所有平台的众多双向密钥加密算法中的一种……但首先要问问自己为什么要这样做。如果你试图做一些黑客攻击,加密 ini 字符串可能不会让你走那么远,因为一旦你解密 ini,字符串就在内存中。解密的密钥将在您的程序中。 Childsplay 破解。

    如果您只是想阻止人们轻松编辑设置,请不要将其放入 ini 中。选择用户难以编辑的二进制格式。

    【讨论】:

      【解决方案3】:

      对于我有电子邮件密码的个人脚本,我使用 TinyEncryption.

      我会将密码放在代码本身中。这可以防止随便的窥​​探者只是浏览并获取电子邮件密码。

      代码也很简单。这是在 Python 中。

      import random
      import base64
      def tinycode(key, text, reverse=False):
          "(de)crypt stuff"
          rand = random.Random(key).randrange
          if reverse:
              text = base64.b64decode(text)
          text = ''.join([chr(ord(elem)^rand(256)) for elem in text])
          if not reverse:
              text = base64.b64encode(text)
          return text
      

      为了提高安全性,我使用 PGP,但您必须提示输入密码。没有完美的设置,这取决于您的需求。

      【讨论】:

        【解决方案4】:

        您可以使用任何带有密钥的标准加密算法,并可能在加密之前为该值添加一些随机填充。

        但是,您打算在哪里存储该密钥?还是您要让用户输入密码并从中派生密钥?如果不是,那么加密该值将毫无意义。

        【讨论】:

          【解决方案5】:

          你也需要解密吗?如果没有,您可以只 salt 并对其进行哈希处理。

          如果您确实想解密它,那么我说您也许也应该指定语言。

          【讨论】:

            【解决方案6】:

            MD5 哈希

            然后将 hash("password") 与 ini_file.password 哈希值进行比较

            【讨论】:

            • 哈,经过整整 18 个月的了解,我想说的是:MD5 哈希函数的安全性受到严重损害。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-08-23
            • 2020-06-22
            • 2015-02-17
            • 1970-01-01
            • 1970-01-01
            • 2011-12-08
            • 1970-01-01
            相关资源
            最近更新 更多