看,田野里的玉米露出了笑脸,秋风吹过,闪烁着太阳的光芒,秋天是金色的。看满山的枫叶,红得就像一团火焰在熊熊燃烧,散发着生机,秋天是红色的。呵呵,我们都错了,秋天不是金黄的,也不是红色的,秋天是五颜六色的。
前两天写了一下RSA加密在php中的用法,今天又无意间在网上看到了PHP写的一个RSA2签名与验签的使用类,感觉不错记录下来,以后留着使用。
PHP RSA2签名与验签的使用类
PHP RSA2签名与验签类代码:
class Rsa2 { private static $PRIVATE_KEY = 'RSA2私钥,也可以PEM文件,要加载进来'; private static $PUBLIC_KEY = 'RSA2公钥,也可以PEM文件,要加载进来'; /** * 获取私钥 * @return bool|resource */ private static function getPrivateKey() { $privKey = self::$PRIVATE_KEY; return openssl_pkey_get_private($privKey); } /** * 获取公钥 * @return bool|resource */ private static function getPublicKey() { $publicKey = self::$PUBLIC_KEY; return openssl_pkey_get_public($publicKey); } /** * 创建签名 * @param string $data 数据 * @return null|string */ public function createSign($data = '') { if (!is_string($data)) { return null; } return openssl_sign($data,$sign, self::getPrivateKey(),OPENSSL_ALGO_SHA256) ? base64_encode($sign) : null; } /** * 验证签名 * @param string $data 数据 * @param string $sign 签名 * @return bool */ public function verifySign($data = '', $sign = '') { if (!is_string($sign) || !is_string($sign)) { return false; } return (bool)openssl_verify($data,base64_decode($sign), self::getPublicKey(),OPENSSL_ALGO_SHA256); } }
类的调用:
1、php RSA2签名
$rsa2 = new Rsa2(); //数据 $data = json_encode(array( 'uid' => 111, 'name' => 'mochu', 'host' => 'http://feiniaomy.com' )); //生成签名 $strSign = $rsa2->createSign($data); //输出签名 echo $strSign;
输出结果:
D+jES7067gDUcC8a/PdZvzlPaZ41sTKTZ6Y8KQZZCs+1SQ5ro6euSImNFX5iKdY3TBJLthlThRLqfwxX2NED3ZSO53OJCXffzl88c2SZDxf+rMSzxHPDyvS7dmbizldDbRGmVoS7dd5EJfLAITPhsjpsAaTQ0jaQT3yPBH4gQ6+qZW9cu2BJZqWbQCUijHdAZlJ3/nQTICrliyE3aF0UfkxMxdJhN/gEIwBqC9tQKyEkeZ+eeesdVWbF4/NSMQIorBA7h18Icyu6sORIsMm1Q6mIc1ybjTNtzDODoboSe/R+dDxapcPBOhRMva9nHop77CG963D7Fli2YoohU7H1nA==
2、php RSA2验签
$rsa2 = new Rsa2(); //数据 $data = json_encode(array( 'uid' => 111, 'name' => 'mochu', 'host' => 'http://feiniaomy.com' )); //生成的签名 $sign = 'D+jES7067gDUcC8a/PdZvzlPaZ41sTKTZ6Y8KQZZCs+1SQ5ro6euSImNFX5iKdY3TBJLthlThRLqfwxX2NED3ZSO53OJCXffzl88c2SZDxf+rMSzxHPDyvS7dmbizldDbRGmVoS7dd5EJfLAITPhsjpsAaTQ0jaQT3yPBH4gQ6+qZW9cu2BJZqWbQCUijHdAZlJ3/nQTICrliyE3aF0UfkxMxdJhN/gEIwBqC9tQKyEkeZ+eeesdVWbF4/NSMQIorBA7h18Icyu6sORIsMm1Q6mIc1ybjTNtzDODoboSe/R+dDxapcPBOhRMva9nHop77CG963D7Fli2YoohU7H1nA=='; //验证签名 $is = $rsa2->verifySign($data, $sign); var_dump($is);
输出结果:
true
以上就是 PHP RSA2签名与验签的如何使用类。人生最大的错误是不断担心会出错。更多关于 PHP RSA2签名与验签的如何使用类请关注haodaima.com其它相关文章!