Encryption 使用与数据相等的键对数据进行编码可以吗?

Encryption 使用与数据相等的键对数据进行编码可以吗?,encryption,cryptography,aes,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个字符的字母和数字。对我来说,这个解决方案似乎比使用任何哈

对于某些项目,我需要以加密的形式存储一些短字符串。对于当前的目的来说,最好是使用自身对其进行加密

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

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


注意:为了问题的简单性,我没有提到一些不需要解释的事情。相信我,我知道我在做什么。我只是想问一下这种方法是否会带来麻烦。

只有在使用相同密钥时,加密才能保证唯一性。如果您使用不同的密钥,则无法保证唯一性。如果您想保证输出的唯一性,那么请使用相同的键并确保输入字符串是唯一的。您可以只接受唯一的字符串(如用户名),也可以在字符串中添加盐以使其他相同的字符串唯一。

那么,在不知道未加密文本的情况下(因此不需要进行任何解密),如何解密该字符串?这是一个自制的哈希函数,可能会导致冲突。改用标准哈希函数。@Scott Hunter我不需要解密它。为了简单起见,我没有提到几件不需要解释的事情。相信我,我知道我在做什么。我只是问这是否会带来麻烦。@TomasM抱歉,但这句话很有趣。你要求某个东西信任安全相关的东西,却不知道它是什么?谁来决定哪些事实不重要?如果你真的知道,你可能不需要在这里问这个。。。(无意冒犯)例如,我的意思是,我永远不需要解密它,我没有提到这一点。我不是在问我的方法是否好,我是在问它是否会导致冲突。这似乎导致了,所以无论如何,我必须找到更好的方法:)