gpt4 book ai didi

android - KeyPairGenerator - 不同设备上的相同 key 对?

转载 作者:行者123 更新时间:2023-11-29 19:01:38 26 4
gpt4 key购买 nike

专家,

是否可以使用Android KeyPairGenerator 类在不同设备上生成相同的 key 对?例如,通过覆盖 SecureRandom 类来生成相同的共享 key 。

非常感谢任何指导。

最佳答案

是的,这是可能的。您可以自己实际实现SecureRandom,因为它有一个公共(public)构造函数。如果您应该做,那就另当别论了。 key 生成器很可能在版本之间发生变化,这意味着您可能会重新创建错误的 key 。此外 - 根据生成算法 - 生成可能需要很长时间。 RSA key 生成有多种生成 key 对的方法而且非常慢。

一般来说,您需要播种 RNG 并保密该种子。这意味着您有一个值需要与 key 相同的安全性。在那种情况下,您不妨使用该 secret key 来加密(或包装)私钥并使用它来分发 key 。如果您使用椭圆曲线 key 之类的东西,那么 EC key 只是所需种子大小的两倍(如果您不对域参数进行编码,而只对 secret 值 s 进行编码)。因此存储私钥不会占用那么多字节。

如果您想使用种子生成 key 对,那么您最好使用定义明确的 key 派生函数,例如 HKDF。请注意,EC 私钥相对容易生成,因此您可能希望使用一组预设的域参数(例如 P-256)来针对该特定算法。基本上,您必须自己生成 key 对 - 例如通过复制 key 对生成代码 - 以确保算法不会改变。

简单地为现有的随机数生成器提供种子是一个非常糟糕的主意。现在不仅 key 对生成器可能会发生变化,随机数生成器也会发生变化。它实际上在 Android 上已经改变了几次。并且播种它可能仍然会导致不同的字节,因为它可能使用真正随机的字节除了你喂给它的种子;这发生了。


如果您不想存储任何内容并使用密码,那么请使用椭圆曲线,使用 PBKDF2 派生私钥,其散列大小与椭圆曲线相同。如果您可以存储某些内容,请使用基于密码的 key 派生函数(例如 PBKDF2)并加密私钥,可能使用 PKCS#12 key 存储或 PGP。

关于android - KeyPairGenerator - 不同设备上的相同 key 对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48870729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com