【发布时间】:2017-04-25 23:29:51
【问题描述】:
我有一个用随机特殊字符加盐的解密密钥(已更改):J_a&3@000$0=f%4{4-f-1*1(1-d@0-3&e|0)1&987*5(b@123$1'1(4*0)1}c+f'59@d@8_6_c)4@1@c(3} 我需要删除所有特殊字符并返回它的未加盐版本,例如,我现在正在使用:
def remove_salt(decrypted_key):
""" Remove salt from a decrypted key """
invalid_chars = set(string.punctuation)
return_key = []
for c in decrypted_key:
if c not in invalid_chars:
return_key.append(c)
return ''.join(return_key)
所以它看起来像这样:
>>> remove_salt("J_a&3@000$0=f%4{4-f-1*1(1-d@0-3&e|0)1&987*5(b@123$1'1(4*0)1}c+f'59@d@8_6_c)4@1@c(3}")
'Ja30000f44f111d03e019875b12311401cf59d86c41c3'
>>>
有没有更安全的方法可以在不完全揭示盐是什么的情况下从密钥中移除盐,我的意思是string.punctuation 明确指出,无效字符是!@#$ .. etc。如何在不完全暴露我的盐是什么的情况下去除这种盐?
请注意,腌制的方式不是我的选择。我只需要让这东西不加盐,而不会让盐是什么特别明显。
【问题讨论】:
-
您可以将
invalid_chars设为参数。如果这仍然不是您所追求的,那么我建议您为您读取和使用的无效字符提供一个外部文件。您还可以将代码压缩为return ''.join(c for c in decrypted_key if c not in invalid_chars) -
盐不是秘密信息,所以你不需要隐藏它。我建议您查看标准加密库。
-
默默无闻!=安全。这不是加盐的工作原理
-
您这样做只是为了好玩,还是打算在需要适当安全性的严肃应用程序中使用此代码?
-
@PM2Ring 取决于您认为严重的情况。这是一个 API 密钥,盐不是我的选择。
标签: python python-2.7 encryption salt