我确实环顾四周 - 并且在谷歌的每个地方 - 直接而明确地回答了这个问题,但无处可去。所以这里简单明了是或否真是太棒了......
我被要求创建一个“AES-256对称(也称为”会话“)密钥” - 不加密,只是密钥 - 用于在soap消息头中签名数据。要求是键大小为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会话/对称密钥”上方的原始密钥来签署soap安全标头?
在将原始密钥用于签名之后,使用来自公共证书的密钥(使用rsa-oaep-mgf1p)对其进行加密并嵌入到标头(EncryptedKey标记)中。它必须在另一端解密并用于验证签名标题的摘要...然后gandalf显示...
我问,因为我从另一方(使用java)被告知“生成对称密钥有什么问题”,但没有明确解释它的错误以及如何正确错。
任何人都可以帮忙吗?我很感激...
感谢。
答案 0 :(得分:0)
你的方式还可以。但更简单的方法是
random_bytes(32)
或
openssl_random_pseudo_bytes(32)
如果你的php版本低于7.0。
您可能还想生成一个16字节的IV
random_bytes(16)