如何使用php

时间:2016-04-25 23:06:25

标签: php encryption symmetric-key

我确实环顾四周 - 并且在谷歌的每个地方 - 直接而明确地回答了这个问题,但无处可去。所以这里简单明了是或否真是太棒了......

我被要求创建一个“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)被告知“生成对称密钥有什么问题”,但没有明确解释它的错误以及如何正确错。

任何人都可以帮忙吗?我很感激...

感谢。

1 个答案:

答案 0 :(得分:0)

你的方式还可以。但更简单的方法是

random_bytes(32)

openssl_random_pseudo_bytes(32)

如果你的php版本低于7.0。

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

random_bytes(16)