预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PHP实现RSA加密类的实例解析PHP实现RSA加密类的实例解析*RSA算法类*签名及密文编码:base64字符串/十六进制字符串/二进制字符串流*填充方式:PKCS1Padding(加解密)/NOPadding(解密)**Notice:Onlyacceptsasingleblock.BlocksizeisequaltotheRSAkeysize!*如密钥长度为1024bit,则加密时数据需小于128字节,加上PKCS1Padding本身的11字节信息,所以明文需小于117字节**@author:linvo*@version:1.0.0*@date:2013/1/23*/classRSA{private$pubKey=null;private$priKey=null;/***自定义错误处理*/privatefunction_error($msg){die(RSAError:.$msg);//TODO}/***构造函数**@paramstring公钥文件(验签和加密时传入)*@paramstring私钥文件(签名和解密时传入)*/publicfunction__construct($public_key_file=,$private_key_file=){if($public_key_file){$this->_getPublicKey($public_key_file);}if($private_key_file){$this->_getPrivateKey($private_key_file);}}/***生成签名**@paramstring签名材料*@paramstring签名编码(base64/hex/bin)*@return签名值*/publicfunctionsign($data,$code=base64){$ret=false;if(openssl_sign($data,$ret,$this->priKey)){$ret=$this->_encode($ret,$code);}return$ret;}/***验证签名**@paramstring签名材料*@paramstring签名值*@paramstring签名编码(base64/hex/bin)*@returnbool*/publicfunctionverify($data,$sign,$code=base64){$ret=false;$sign=$this->_decode($sign,$code);if($sign!==false){switch(openssl_verify($data,$sign,$this->pubKey)){case1:$ret=true;break;case0:case-1:default:$ret=false;}}return$ret;}/***加密**@paramstring明文*@paramstring密文编码(base64/hex/bin)*@paramint填充方式(貌似php有bug,所以目前仅支持OPENSSL_PKCS1_PADDING)*@returnstring密文*/publicfunctionencrypt($data,$code=base64,$padding=OPENSSL_PKCS1_PADDING){$ret=false;if(!$this->_checkPadding($padding,en))$this->_error(paddingerror);if(openssl_public_encrypt($data,$result,$this->pubKey,$padding)){$ret=$this->_encode($result,$code);}return$ret;}/***解密**@paramstring密文*@paramstring密文编码(base64/hex/bin)*@paramint填充方式(OPENSSL_P