对于某些项目,我需要以加密形式存储一些短字符串。对于当前目的来说,使用它自己加密它是理想的。
# This would be the usual way:
result = AES_ENCRYPT(string, key)
# but I would like to do it this way:
result = AES_ENCRYPT(string, string)
相同的字符串本身将用作密钥!
'字符串'总是有一些短文本,比如字母和数字的20个字符。这个解决方案似乎比使用任何哈希函数更好,因为哈希可能会导致冲突 - 不同的字符串可能产生相同的结果,这是低概率,我知道,但仍然不是零所以我想避免这种情况。
我的问题是,我的方法安全吗?使用数据本身对数据进行编码会导致任何安全问题吗?这是否意味着如果“攻击者”可以更容易解密结果。知道它是通过加密我的方式产生的吗?谢谢。
注意:为了简单的问题,我没有提到几个不必解释的事情。只要相信我,我就知道我在做什么。我只是问这种方法是否会导致任何麻烦。
答案 0 :(得分:1)
如果使用相同的键,加密仅保证唯一性。如果您使用不同的密钥,则无法保证唯一性。如果要保证输出的唯一性,请保持相同的键并确保输入字符串是唯一的。您可以只接受唯一的字符串(如用户名),或者在字符串中添加salt以使其他字符串唯一。