这篇文章主要介绍了php实现RSA加密类,实例分析了php自定义RSA类实现加密与解密的技巧,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了php实现RSA加密类。分享给大家供大家参考。具体分析如下:
通过openssl实现的签名、验签、非对称加解密,需要配合x.509证书(如crt和pem)文件使用。
由于各种原因,该类并不十分完善,欢迎各种测试!
/**
* RSA算法类
* 签名及密文编码:base64字符串/十六进制字符串/二进制字符串流
* 填充方式: PKCS1Padding(加解密)/NOPadding(解密)
*
* Notice:Only accepts a single block. Block size is equal to the RSA key size!
* 如密钥长度为1024 bit,则加密时数据需小于128字节,加上PKCS1Padding本身的11字节信息,所以明文需小于117字节
*
* @author: linvo
* @version: 1.0.0
* @date: 2013/1/23
*/
class RSA{
private $pubKey = null;
private $priKey = null;
/**
* 自定义错误处理
*/
private function _error($msg){
die('RSA Error:' . $msg); //TODO
}
/**
* 构造函数
*
* @param string 公钥文件(验签和加密时传入)
* @param string 私钥文件(签名和解密时传入)
*/
public function __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);
}
}
/**
* 生成签名