php rsa理解
参考链接:http://www.cnblogs.com/firstForEver/p/5803940.html
自己封装的一个类:
<?php class CRsaAuthorization { public static $public_key='-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCzNqnKnUn6S7WkOPQroM1rkh7j nofhvUiWjU8N4RrHtnTW4FPz1540EXTP6n2+ohK5r1AujFaLLIk9PsM+guWY5iKk 9AoeLOSlDCX66ubuOnt0UpMK0pXwFrBl/M9FNNVVbfA/dWxbM65akhsLLB46o8/v 2oHdArVF4DVrh4rIhQIDAQAB -----END PUBLIC KEY-----'; private static $pu_key; private static $pi_key; private $licence; function __construct() { self::$pu_key=openssl_pkey_get_public(self::$public_key); // var_dump(self::$pu_key); } // public function get_public_key(){ // } public function setPuKey($public_key){ self::$pu_key=openssl_pkey_get_public($public_key); } public function setPiKey($private_key){ self::$pi_key = openssl_pkey_get_private($private_key); } public function privateDecrypt($encrypted = ''){ // if (!is_string($encrypted)) { // return ; // } $split = str_split($encrypted, 172);// 1024bit 固定172 foreach ($split as $part) { $isOkay = openssl_private_decrypt(base64_decode($part), $de_data, self::$pi_key);// base64在这里使用,因为172字节是一组,是encode来的 if(!$isOkay){ return false; } $decode_data .= $de_data; } return $decode_data; } public function publicDecrypt($encrypted = '') { if (!is_string($encrypted)) { return ; } // $encrypted = substr($encrypted,5); $encrypted = substr($encrypted,0,-5); // echo $encrypted; $size=strlen($encrypted); // echo $size; $result=""; for($i=0;$i<($size/172);$i++) { $data=substr($encrypted,$i*172,172); // echo $data."---------"; if((openssl_public_decrypt(base64_decode($data), $decrypted, self::$pu_key))) { $result.=$decrypted; // echo $result; } else{ // echo "decrypt failed"; $result = ""; } } return $result; } public function publicEncrypt($originalData){ $split = str_split($originalData, 100);// 1024bit && OPENSSL_PKCS1_PADDING 不大于117即可 foreach ($split as $part) { $isOkay = openssl_public_encrypt($part, $en_data, self::$pu_key); if(!$isOkay){ return false; } // echo strlen($en_data),'<br/>'; $encode_data .= base64_encode($en_data); } return $encode_data; } public function md5Checked($data,$parseLicence) { $uid = exec('awk -F "=" \'/product_uuid/{print $2}\' /etc/save_env',$output,$ret); if(empty($uid)) echo "获取uuid失败"; // $data = // $uid = "faf6d7fda265a4c65416009164398372d12f1f3d7f4cac2f"; $chkstr=json_encode($data).$uid; // echo $chkstr."<br>"; $strmd5=md5($chkstr); // echo "----".$strmd5."<br>"; $licence=""; for($i=1;$i<strlen($strmd5);$i=$i+2) { $licence .=strtoupper($strmd5[$i]); } // echo "licence:".$licence; if($licence!=$parseLicence){ return false; }else{ return true; } } } ?>