php基於openssl函數的加密、解密、驗證操做技巧

 

本文實例講述了PHP實現超簡單的SSL加密解密、驗證及簽名的方法。分享給你們供你們參考,具體以下:加密

1 sign簽名代碼:spa

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

2 verify 驗證代碼:ip

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

3. 解密代碼支付寶

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

 

相關文章
相關標籤/搜索