使用等于数据的密钥对数据进行编码是否可以?

时间:2015-06-07 11:06:28

标签: encryption cryptography aes

对于某些项目,我需要以加密形式存储一些短字符串。对于当前目的来说,使用它自己加密它是理想的。

# 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个字符。这个解决方案似乎比使用任何哈希函数更好,因为哈希可能会导致冲突 - 不同的字符串可能产生相同的结果,这是低概率,我知道,但仍然不是零所以我想避免这种情况。

我的问题是,我的方法安全吗?使用数据本身对数据进行编码会导致任何安全问题吗?这是否意味着如果“攻击者”可以更容易解密结果。知道它是通过加密我的方式产生的吗?谢谢。

注意:为了简单的问题,我没有提到几个不必解释的事情。只要相信我,我就知道我在做什么。我只是问这种方法是否会导致任何麻烦。

1 个答案:

答案 0 :(得分:1)

如果使用相同的键,加密仅保证唯一性。如果您使用不同的密钥,则无法保证唯一性。如果要保证输出的唯一性,请保持相同的键并确保输入字符串是唯一的。您可以只接受唯一的字符串(如用户名),或者在字符串中添加salt以使其他字符串唯一。