加密 INI 文件中的值的最佳方法是什么?
使用加密/解密密钥??
起到什么作用?你想保护或混淆什么?
您可以使用适用于所有平台的众多双向密钥加密算法中的一种……但首先要问自己为什么要这样做。如果你试图做一些黑客攻击,加密 ini 字符串可能不会让你走那么远,因为一旦你解密 ini,字符串就在内存中。解密的密钥将在您的程序中。Childsplay 破解。
如果您只是想阻止人们轻松编辑设置,请不要将其放入 ini 中。选择用户将难以编辑的二进制格式。
出于什么目的?安全?
如果您尝试(例如)加密明文密码,您可能应该使用 PKI 的一些实现。但请记住,密钥管理将成为您的问题。仅仅加密值并不是万能的,因为 ini 文件很可能在本地主机的文件系统上,大概是您必须存储密钥对的同一个地方。您只是将问题抽象到了一层。他们将无法直接读取您的加密密码,但如果他们能找到您存储密钥对的位置,他们就可以自行解密。
对于我有电子邮件密码的个人脚本,我使用 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,但您必须提示输入密码。没有完美的设置,这取决于您的需求。
您可以使用任何带有密钥的标准加密算法,并可能在加密之前为该值添加一些随机填充。
但是,您打算在哪里存储该密钥?还是您要让用户输入密码并从中派生密钥?如果不是,那么加密该值将毫无意义。
你也需要解密吗?如果不是,你可以只加盐和哈希。
如果您确实想解密它,那么我说您也许也应该指定语言。
MD5 哈希
然后将 hash("password") 与 ini_file.password 哈希值进行比较