0

我确实环顾四周 - 以及在谷歌上的任何地方 - 寻找这个问题的直接和明确的答案,但一无所获。所以这里简单明了的是或否会很棒......

我被要求创建一个“AES-256 对称(也称为“会话”)密钥” - 不是加密,只是密钥 - 用于在肥皂消息头中签署数据。要求是密钥是 256“大小”......是的,我知道......

我知道 MCRYPT_RIJNDAEL_128 大小 32 实际上是 php 中的 AES-256 密码。我读了所有这些。

我知道有人问我是否有适用于他们的 java 实现。我必须使用 php。我有以下代码:`

$keysize = mcrypt_module_get_algo_key_size(MCRYPT_RIJNDAEL_128);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '',MCRYPT_MODE_CBC, '');
$keysize = 32;
while (strlen($key) < $keysize) $key =  mcrypt_create_iv(mcrypt_enc_get_iv_size ($td),MCRYPT_RAND);  

这确实给了我一个原始的“钥匙”。

问题:“AES-256 会话/对称密钥”上方的原始密钥是否可用于签署肥皂安全标头?

在将原始密钥用于签名后,它会使用来自公共证书的密钥(使用 rsa-oaep-mgf1p)进行加密,并嵌入到标头中(EncryptedKey 标记)。它必须在另一端解密并用于验证签名标头的摘要......然后甘道夫出现......

我之所以问,是因为另一方(使用 java)告诉我“生成对称密钥的方式有问题”,但没有明确解释它的问题以及如何纠正该错误。

有人可以帮忙吗?我会很感激...

谢谢。

4

1 回答 1

0

你的方法没问题。但更简单的方法是

random_bytes(32)

或者

openssl_random_pseudo_bytes(32)

如果您的 php 版本低于 7.0。

您可能还想生成一个 16 字节的 IV

random_bytes(16)
于 2016-04-26T03:28:35.230 回答