Encryption AES/Rijndael:加密数据搜索-静态salt和IV

Encryption AES/Rijndael:加密数据搜索-静态salt和IV,encryption,Encryption,我想搜索加密数据。这意味着每次我加密相同的明文时,都需要有相同的密文。例如,想象一个加密姓名列表,我想在其中找到所有的“Kevin”。我现在会加密“Kevin”并在数据库中搜索加密文本。所有点击都是“凯文”的——但仍然只有拥有密码的人知道 现在我的问题是:如果我一直使用相同的盐和IV(以获得上述效果),安全性如何?加密仍然安全吗?或者有没有其他方法可以搜索加密数据?如果要进行确定性加密,则应使用加密模式 这是为确定性加密设计的(而不是修改为其他内容设计的加密模式) 一种可能性是中描述的SIV加密

我想搜索加密数据。这意味着每次我加密相同的明文时,都需要有相同的密文。例如,想象一个加密姓名列表,我想在其中找到所有的“Kevin”。我现在会加密“Kevin”并在数据库中搜索加密文本。所有点击都是“凯文”的——但仍然只有拥有密码的人知道


现在我的问题是:如果我一直使用相同的盐和IV(以获得上述效果),安全性如何?加密仍然安全吗?或者有没有其他方法可以搜索加密数据?

如果要进行确定性加密,则应使用加密模式 这是为确定性加密设计的(而不是修改为其他内容设计的加密模式)

一种可能性是中描述的SIV加密模式


(当然,确定性加密有其缺点,但讨论这一点并不是这个问题的一部分。)

您想在某处搜索包含“Kevin”的字符串,还是只想比较完整的消息?我想比较完整的消息!在我看来,检查文本中是否有“凯文”也是一样的:必须建立文本的加密单词列表。在最后,应该对加密单词(“Kevin”)进行1:1搜索。或者你知道更聪明的方法吗?你知道有没有JavaScript实现吗?我不知道有任何JavaScript实现。JavaScript中的加密通常意味着在错误的层中进行,因此JavaScript中的加密库很少。客户端的加密是获得“主机验证主机”的唯一机会。那么为什么是“错误的层”?您使用什么将JavaScript代码安全地发送到客户端?您需要一个安全通道来执行此操作。但是,如果您已经有了一个安全的通道来交付代码,那么为什么不使用这个通道来交换所有数据呢?这通常转化为要么使用SSL,然后不必使用JavaScript加密,要么不使用SSL,然后JavaScript加密也无助于抵御中间人攻击。请澄清最后一条评论。有一些应用程序可以使用JavaScript进行加密,您的应用程序可能就是其中之一。但这些应用程序很少,JavaScript中可靠的加密库也很少。