Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

php rsa2 签名

作者:你不爱我就滚。   发布日期:2026-03-10   浏览:531

在 PHP 中使用 RSA 算法进行签名,可以使用 OpenSSL 扩展库来实现。以下是一个示例代码:

// 原始数据
$data = 'Hello, World!';

// 读取私钥文件
$privateKey = openssl_pkey_get_private(file_get_contents('private_key.pem'));

// 使用私钥对数据进行签名
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256);

// 将签名进行 base64 编码
$base64Signature = base64_encode($signature);

// 输出签名结果
echo $base64Signature;

在上面的代码中,我们首先读取了私钥文件 private_key.pem,然后使用 openssl_sign 函数对原始数据进行签名,使用 SHA256 算法。签名结果是一个二进制字符串,我们将其进行 base64 编码后输出。

请注意,上述代码中的私钥文件 private_key.pem 应该是包含私钥的 PEM 格式文件。如果你没有私钥文件,可以使用 OpenSSL 生成一个:

openssl genpkey -algorithm RSA -out private_key.pem -aes256

这将生成一个带有 AES256 加密的 RSA 私钥文件 private_key.pem

另外,如果你需要验证签名,可以使用公钥进行验证。以下是一个示例代码:

// 原始数据
$data = 'Hello, World!';

// 读取公钥文件
$publicKey = openssl_pkey_get_public(file_get_contents('public_key.pem'));

// 读取签名
$base64Signature = '...'; // 假设这里是签名的 base64 编码

// 将签名进行 base64 解码
$signature = base64_decode($base64Signature);

// 使用公钥验证签名
$isValid = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256);

// 输出验证结果
if ($isValid == 1) {
    echo 'Signature is valid.';
} elseif ($isValid == 0) {
    echo 'Signature is invalid.';
} else {
    echo 'An error occurred while verifying the signature.';
}

在上面的代码中,我们首先读取了公钥文件 public_key.pem,然后使用 openssl_verify 函数对原始数据和签名进行验证,使用 SHA256 算法。验证结果为 1 表示签名有效,为 0 表示签名无效,其他值表示验证过程中出现了错误。

与私钥文件类似,公钥文件 public_key.pem 应该是包含公钥的 PEM 格式文件。如果你没有公钥文件,可以使用以下命令从私钥文件中导出公钥:

openssl rsa -in private_key.pem -pubout -out public_key.pem

这将从私钥文件 private_key.pem 中导出公钥,并保存到公钥文件 public_key.pem 中。

上一篇:php 创建数据库连接

下一篇:跨方法调用对象 php

大家都在看

php session用法

php 定义常量

php soapclient

phpisset函数

php html转图片

php后端

php爬虫框架

php多线程与并发

php读取csv文件

php+mysql动态网站开发

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站