PHP RSA2 签名算法

来源:互联网 发布:ubuntu mysql 编辑:程序博客网 时间:2024/05/20 11:25

博主在项目中遇到PHP签名算法,找了很多资料,现在总结下。

RSA2是在原来SHA1WithRSA签名算法的基础上,新增了支持SHA256WithRSA的签名算法。

该算法在摘要算法上比SHA1WithRSA有更强的安全能力。

SHA1WithRSA的签名算法会继续提供支持,但为了您的应用安全,强烈建议使用SHA256WithRSA的签名算法。

RSA类

<?php/** * Created by PhpStorm. * User: webff * Date: 2017/5/12 * Time: 20:03 */class Rsa2{    private static $PRIVATE_KEY ="私钥内容";    private static $PUBLIC_KEY  ="公钥内容";    /**     * 获取私钥     * @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 = '')    {      //  var_dump(self::getPrivateKey());die;        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        );    }}

PHP调用

$rsa2 = new Rsa2();$data = 'mydata'; //待签名字符串$strSign = $rsa2->createSign($data);      //生成签名$is_ok = $rsa2->verifySign($data, $strSign); //验证签名
2 0
原创粉丝点击