Java AES仅共享密钥(无盐或IV)
我需要使用AES-symmetric-a字符串加密,然后与客户端共享加密的字符串 他们知道密钥(我们通过电话进行了通信),他们应该能够破译加密字符串 然而,我发现的Java实现都需要与加密文档一起共享salt(或IV)。如果每次我都要发送salt,那么这就破坏了只共享密文和对称密钥(在手之前)的目的Java AES仅共享密钥(无盐或IV),java,spring,spring-boot,encryption,aes,Java,Spring,Spring Boot,Encryption,Aes,我需要使用AES-symmetric-a字符串加密,然后与客户端共享加密的字符串 他们知道密钥(我们通过电话进行了通信),他们应该能够破译加密字符串 然而,我发现的Java实现都需要与加密文档一起共享salt(或IV)。如果每次我都要发送salt,那么这就破坏了只共享密文和对称密钥(在手之前)的目的 我理解错了什么吗?有没有办法只共享密文和对称密钥?加密中IV的目的是随机化。如果使用ECB操作模式,它可能会泄漏在同一密钥下加密的密文的信息。在维基百科上看到著名的企鹅 现代操作模式使用IV,如AE
我理解错了什么吗?有没有办法只共享密文和对称密钥?加密中IV的目的是随机化。如果使用ECB操作模式,它可能会泄漏在同一密钥下加密的密文的信息。在维基百科上看到著名的企鹅 现代操作模式使用IV,如AES-GCM,其处于 你应该把危险告诉大公司。我相信他们很容易适应你的情况 注:ECB模式只有在以下情况下才是安全的
- 您的数据总是不同的(无模式)
- 您使用密钥协议协议为每个加密生成一个新密钥,但情况并非如此
- 钥匙是秘密,IV不是
- 许多消息可以使用相同的密钥进行加密,但IV对于每个新消息都是不同的。密钥和IV组合对于每条消息都必须是唯一的,并且IV也必须是随机的
您可能还希望与评论一起阅读,以便更好地理解它。IV不必是秘密的,因此您可以将其与密文一起共享。更多信息请点击这里:你能解释一下为什么静脉注射对你来说是个问题吗?它不是一个秘密值。IV对于每条消息都是唯一的,因此逻辑上遵循消息。通常,您会在消息中加入IV,例如在加密消息的前面加上它。IV不需要是秘密的,但它需要是随机的。因为客户是一家大公司,除了他们期望的以外,不能处理任何事情……客户永远不需要处理或知道IV的存在——只有你的软件才需要。
E(k,m) = E(k,m') iff m=m'