android - 在 ECDH 之后生成 AES key

标签 android encryption aes

我正在使用 ECDH 在 Alice 和 Bob 之间共享一个 secret ,一个在 Android 上运行,另一个在嵌入式上运行。我的理解是,最好的做法是双方生成一个 AES key 来加密消息。有人可以发送一些示例,说明 Alice 和 Bob 双方在使用 ECDH 就共享 secret 达成一致后如何生成相同的 AES key 吗?

最佳答案

最好遵循 NIST 关于 key 协议(protocol)方案的建议,例如使用 NIST SP 800-56Arecommendations in the implementers guideNIST SP 800-108 中指定的 key 派生方法之一.它描述了如何将 secret 转换为字节,然后可以使用其中一个 KDF 转换为(多个) key 。

请注意,从 1.50 开始, key 派生在 Bouncy CaSTLe 的轻量级 API 中,因此也应该出现在 Spongy Castle 中。 .最常见的 NIST 算法在 org.bouncycaSTLe.crypto.generators.KDFCounterBytesGenerator 中。您可以简单地在构造函数中为它提供任何 HMAC(比如 HMAC SHA1),并在初始化期间为它提供 org.bouncycaSTLe.crypto.params.KDFCounterParameters

请注意,这比 Perseids 的答案更符合加密实践,但可能更难理解/实现。

关于android - 在 ECDH 之后生成 AES key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23167936/

相关文章:

android - LocationManager.requestSingleUpdate

android - Box2D Physics 是否依赖帧率?

android - 在Android中使用OpenCV录制视频

algorithm - Octave 中的 RSA 实现

c# - 要获得 AES-256 加密,我是否只需提供 256 位 key ?

c# - NodeJS 和 C# 中的 AES256 加密/解密

c# - algorithm - C# 中的 RijndaelManaged 类是否等同于 AES 加密?

java - LogCat 垃圾邮件 GC_FOR_MALLOC 但只使用了 50% 的内存

vb.net - YouTube 签名解密以及 VB.Net 的工作示例

java - Ruby 和 Scala(或 Java)中的 AES 解密