【发布时间】:2016-04-25 23:06:24
【问题描述】:
我确实环顾四周 - 并在谷歌上到处寻找这个问题的直接和明确的答案,但一无所获。所以这里简单明了的是或否会很棒......
我被要求创建一个“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 标记)。它必须在另一端解密并用于验证签名标头的摘要......然后 gandalf 出现......
我之所以问,是因为对方(使用 java)告诉我“对称密钥的生成方式有问题”,但没有明确解释它有什么问题以及如何纠正错了。
有人可以帮忙吗?我会很感激的......
谢谢。
【问题讨论】:
-
可能是这样,但是这段代码太复杂了。
-
好的。所以随机字节()或openssl_random_pseudo_bytes()更好?!另外 - 没有任何迹象表明这一点,但因为我必须加密密钥 - 我必须在加密之前对其进行 base64_encode 吗?我在肥皂安全上找到的代码加密了原始密钥。只是确保我可以有足够的信息。谢谢。
-
是的,这两种选择在代码方面更好,因为您不必使用循环。我没有使用 SOAP 加密的经验,所以不知道生成密钥后如何使用它。
标签: php encryption symmetric-key