在Python中存储和读取文件中的加密字符串
我使用AES(来自PyCrypto)加密密码并将其存储在文件中。该文件的格式为:在Python中存储和读取文件中的加密字符串,python,pycrypto,Python,Pycrypto,我使用AES(来自PyCrypto)加密密码并将其存储在文件中。该文件的格式为: user:username key:<encrypted key> 现在,如何从文件中读取密钥进行解密?如果我使用line.split(“:”),如果加密密钥本身具有“:”字符,会不会导致问题 加密时有没有办法避免“:”呢?还是有更好的方法来储存钥匙?我不能使用哈希,因为我需要一些其他功能的密钥。谢谢。将用户名存储在第一行,密码存储在第二行,如下所示 username p4ssw0rd 这样你就
user:username
key:<encrypted key>
现在,如何从文件中读取密钥进行解密?如果我使用line.split(“:”),如果加密密钥本身具有“:”字符,会不会导致问题
加密时有没有办法避免“:”呢?还是有更好的方法来储存钥匙?我不能使用哈希,因为我需要一些其他功能的密钥。谢谢。将用户名存储在第一行,密码存储在第二行,如下所示
username
p4ssw0rd
这样你就不需要做这种事情了
虽然最好的解决方案是将这些东西存储在数据库中
现在,如何从文件中读取密钥进行解密?如果我使用line.split(“:”),如果加密密钥本身具有“:”字符,会不会导致问题
当然会,这就是为什么有第二个可选参数max\u split
:
key, value = line.split(':', 1)
或者,您可以使用:
两者之间的区别在于当根本没有结肠时会发生什么;前者将返回一个元素,在尝试将其解压为两个变量时会给您一个ValueError
,而后者只会给您一个空的值
但是,值得注意的是,如果您使用的是Base 64,
:
从一开始就不会出现。Base 64使用的唯一字符是A
-Z
,A
-Z
,0
-9
,+
和//code>。有一些Base 64变体,其中可能有一个确实使用了:
,但是Python的Base 64
模块应用的标准版本没有使用。您可以限制执行的拆分数量:
>>> line="key:foo:bar:baz"
>>> line.split(":", 1)
['key', 'foo:bar:baz']
只要您知道字段名中没有“:”,就可以了。谢谢,但我需要它是key:value格式。我对每个用户都有多个属性,它们可以是任意顺序的。然后我郑重建议使用真正的格式。使用Python(例如JSON)真的很容易。比手工解析代码要少得多。哦,没错。对不起,我没意识到。缺乏睡眠。谢谢
key, _, value = line.partition(':')
>>> line="key:foo:bar:baz"
>>> line.split(":", 1)
['key', 'foo:bar:baz']