PHP RSA2签名与验签的如何使用类

看,田野里的玉米露出了笑脸,秋风吹过,闪烁着太阳的光芒,秋天是金色的。看满山的枫叶,红得就像一团火焰在熊熊燃烧,散发着生机,秋天是红色的。呵呵,我们都错了,秋天不是金黄的,也不是红色的,秋天是五颜六色的。

前两天写了一下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其它相关文章!

您可能有感兴趣的文章
php get_magic_quotes_gpc()函数介绍与用法

php取消运行时间限制的方法

php中ini_set函数介绍

php获取文件夹下所有文件/文件夹

php如何实现文件下载的方法