从解密密钥中删除salt的更安全的方法

时间:2017-04-25 15:05:57

标签: python python-2.7 encryption 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}我需要删除所有特殊字符并返回它的无盐版本,例如,现在我正在使用:

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。如何在不完全透露我的盐的情况下去除这种盐?

请注意,这是盐渍的方式不是我的选择。我只需要保持这个东西不受影响,而不是盐是什么超级明显。

1 个答案:

答案 0 :(得分:1)

我对你使用盐感到困惑。 Salt通常附加在密码的开头或结尾,并且结果被加密和存储。 Salt值本身存储在clear中,主要用于使字典攻击更加困难。因此,当用户输入密码时,您可以从存储密码的任何位置检索其指定的盐,将其附加到他们输入的内容中,使用您选择的任何密码哈希对其进行哈希处理,并检查存储的哈希值是否与提供的哈希相匹配哈希值。也许需要一些澄清 - 为什么要尝试删除密码中嵌入的盐?