PHP下SSL加密解密、验证、签名方法(很简单)

超级简单,依赖于OpenSSL扩展,这里就不多废话了,直接奉上代码

签名:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function sign( $data ) {
  //读取私钥文件
  $priKey = file_get_contents ( 'key/rsa_private_key.pem' );
  
  //转换为openssl密钥,必须是没有经过pkcs8转换的私钥
  $res = openssl_get_privatekey( $priKey );
  
  //调用openssl内置签名方法,生成签名$sign
  openssl_sign( $data , $sign , $res );
  
  //释放资源
  openssl_free_key( $res );
  
  return $sign ;
}

验证:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function verify( $data , $sign ) {
  //读取支付宝公钥文件
  $pubKey = file_get_contents ( 'key/alipay_public_key.pem' );
  
  //转换为openssl格式密钥
  $res = openssl_get_publickey( $pubKey );
  
  //调用openssl内置方法验签,返回bool值
  $result = (bool)openssl_verify( $data , $sign , $res );
   
  //释放资源
  openssl_free_key( $res );
  
  return $result ;

解密

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function decrypt( $content ) {
  
  //读取商户私钥
  $priKey = file_get_contents ( 'key/rsa_private_key.pem' );
   
  //转换为openssl密钥,必须是没有经过pkcs8转换的私钥
  $res = openssl_get_privatekey( $priKey );
  
  //声明明文字符串变量
  $result = '' ;
  
  //循环按照128位解密
  for ( $i = 0; $i < strlen ( $content )/128; $i ++ ) {
   $data = substr ( $content , $i * 128, 128);
    
  //拆分开长度为128的字符串片段通过私钥进行解密,返回$decrypt解析后的明文
   openssl_private_decrypt( $data , $decrypt , $res );
  
  //明文片段拼接
   $result .= $decrypt ;
  }
  
  //释放资源
  openssl_free_key( $res );
  
  //返回明文
  return $result ;
}

希望本文所述对大家学习php程序设计有所帮助。

文章来源:http://www.jb51.net/article/76905.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值