超級簡單,依賴於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程序設計有所幫助。