我使用用户提供的32字节秘密密钥使用HMAC-256对一些数据进行签名。我还希望我的应用程序使用AES-192加密数据。我应该向用户要求另一个秘密密钥(这次是16字节大小),还是有一种安全的方法从另一个32字节密钥中导出16字节的强秘密密钥?第二种方法会使应用程序配置更容易一点。有什么指导方针或提示吗?或者这种方法完全是胡说八道?
这方面的工具是HKDF。这是从同一初始关键帧材质导出多个关键帧的一种非常好的方法。我建议您使用HKDF从最初的32字节密钥派生两个密钥,而不是直接从HMAC密钥派生AES密钥。通常,你会将32字节的IKM扩展到48字节,然后将其拆分为两个键。
这是假设初始的32字节密钥材料是随机的。如果不是,你应该使用PBKDF2(或其他密码扩展器,如scrypt或bcrypt)将你的密钥材料扩展到48字节,然后将它分成你的两个密钥。HKDF是一种速度太快的算法,不适合人工创建的密码。
在那之后,我试着拿回我的子键,以防它们还在身边。我可以看到我的钥匙和子钥匙在GPG钥匙串OSX应用程序。使用和进行列表时,我获得了与主密钥和子密钥相关联的所有公钥,但只获得了主密钥和其中一个子密钥的秘密(我没有导出到yubikey的那个)。 尝试调试更多,我决定使用一个较新版本的gpg来合并密钥等等,希望我能拿回秘密(我想在这一点上它已经不可能了,但我一直在尝试) 使用,它告诉我有一个主密钥和两个
考虑以下java代码: 此代码输出“”。所以是64字节,而SHA-256是32字节哈希。 我知道我指定了512位(64字节)作为密钥长度 然而,我希望生成的密钥(PBKDF2)将由SHA-256进行散列,这样无论我使用的密钥大小如何,输出都应始终为32字节。 我错过了什么(或者为什么我的期望是错误的)?
问题内容: 如何列出和导出密钥库中的私钥? 问题答案: 最初来自Example Depot的一部分代码,用于列出密钥存储区中的所有别名: 几个月前,在Sun论坛上讨论了私钥的导出问题,而u:turingcompleter提出了DumpPrivateKey类,以将其缝入您的应用程序。 注意:这使用Sun软件包,这是一件“坏事”。 如果您可以下载apache commons代码 ,则以下是无需警告即可
我被要求为安全类实现AES算法。在实现过程中,我找不到答案,我如何从用户那里接受像密码这样的任意长度的密钥,并将其转换为128、192或256位密钥。我该怎么办?
问题内容: 我无法在上创建索引。 MySQL: 问题答案:
问题内容: 我有一个主键为varchar(255)的表。在某些情况下,255个字符不够用。我尝试将字段更改为文本,但是出现以下错误: 我怎样才能解决这个问题? 编辑:我还应该指出,该表具有包含多个列的复合主键。 问题答案: 发生错误是因为MySQL只能索引BLOB或列的前N个字符。所以错误主要发生时,有一个领域/列类型或BLOB或那些属于或类型,如,,,,,和您尝试使一个主键或索引。无论长度是完整