小样的个人空间

PHP-RSA验证

准备工作

php的openssl扩展里已经封装好了验签的方法openssl_verify。
如果在Windows下的php.ini需要开启Openssl模块: extension=php_openssl.dll

私钥:

即RSA私钥,按照手册,按以下方式生成:

openssl genrsa -out rsa_private_key.pem 1024 

公钥:

即RSA私钥,按照手册,按以下方式生成:

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

签名函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
/**
* 签名字符串
* @param $prestr 需要签名的字符串
* return 签名结果
*/
function rsaSign($prestr) {
$public_key= file_get_contents('rsa_private_key.pem');
$pkeyid = openssl_get_privatekey($public_key);
openssl_sign($prestr, $sign, $pkeyid);
openssl_free_key($pkeyid);
$sign = base64_encode($sign);
return $sign;
}
?>