PHP 实现 SHA256 with RSA 签名 (实例讲解)
<?php
// 引入openssl扩展
extension=php_openssl.dll
// 假设你已经有了一个私钥和公钥
$privateKey = "-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----";
$publicKey = "-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----";
// 待签名的数据
$data = "这是一个测试字符串";
// 使用SHA256对数据进行签名
$signature = openssl_sign($data, $rawSignature, $privateKey, 'SHA256');
// 如果签名成功,$rawSignature将包含原始签名,否则它将为FALSE
if ($signature) {
echo "签名成功。\n";
// 原始签名通常需要Base64编码才能在网络上安全传输
$base64Signature = base64_encode($rawSignature);
echo "Base64编码的签名: " . $base64Signature . "\n";
// 验证签名
$isVerified = openssl_verify($data, $rawSignature, $publicKey, 'SHA256');
if ($isVerified === 1) {
echo "签名验证通过。\n";
} elseif ($isVerified === 0) {
echo "签名验证失败。\n";
} else {
echo "验证错误。\n";
}
} else {
echo "签名失败。\n";
}
?>
这段代码展示了如何在PHP中使用SHA256和RSA算法对数据进行签名,并验证签名的正确性。需要注意的是,实际应用中密钥应该从安全的存储中读取,而不是硬编码在脚本中。
评论已关闭