程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP下SSL加密解密、驗證、簽名方法(很簡單)

PHP下SSL加密解密、驗證、簽名方法(很簡單)

編輯:PHP綜合

超級簡單,依賴於OpenSSL擴展,這裡就不多廢話了,直接奉上代碼

簽名:

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;
}

驗證:

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;

解密

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程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved