什么是RSA2?RSA2是在原有的SHA1WithRSA签名算法的基础上,增加了新的支持SHA256WithRSA的签名算法。该算法比摘要算法中的SHA1WithRSA具有更强的安全能力。SHA1WithRSA签名算法将继续支持,但为了您的应用安全,强烈建议使用SHA256WithRSA签名算法。开发平台算法名称标准签名算法名称备注RSA2SHA256WithRSA(强烈推荐),RSA密钥长度必须至少为2048位RSASHA1WithRSA对RSA密钥长度没有限制,建议使用2048位以上哪些公司在使用它?一些大公司的开发平台,比如支付宝、新浪微博。Createprivatekey,publickey//生成原始RSA私钥文件opensslgenrsa-outrsa_private_key.pem1024//将原始RSA私钥转换为pkcs8格式opensslpkcs8-topk8-informPEM-inrsa_private_key.pem-outformPEM-nocrypt-outprivate_key.pem//生成RSA公钥opensslrsa-inrsa_private_key.pem-pubout-outrsa_public_key.pem//我们在服务端使用私钥rsa_private_key.pem,将公钥分发给前端比如安卓和ios。PHP-RSA2签名验证类Rsa2{privatestatic$PRIVATE_KEY='rsa_private_key.pemcontent';privatestatic$PUBLIC_KEY='rsa_public_key.pem内容';/***获取私钥*@returnbool|resource*/privatestaticfunctiongetPrivateKey(){$privKey=self::$PRIVATE_KEY;返回openssl_pkey_get_private($privKey);}/***获取公钥*@returnbool|resource*/privatestaticfunctiongetPublicKey(){$publicKey=self::$PUBLIC_KEY;返回openssl_pkey_get_public($publicKey);}/***创建签名*@paramstring$datadata*@returnnull|string*/publicfunctioncreateSign($data=''){if(!is_string($data)){returnnull;}返回openssl_sign($data,$sign,self::getPrivateKey(),OPENSSL_ALGO_SHA256)?base64_encode($符号):空;}/***验证签名*@paramstring$datadata*@paramstring$signsignature*@returnbool*/publicfunctionverifySign($data='',$sign=''){if(!is_string($sign)||!is_string($sign)){返回false;}return(bool)openssl_verify($data,base64_decode($sign),self::getPublicKey(),OPENSSL_ALGO_SHA256);}}PHP调用require_once"Rsa2.php";$rsa2=newRsa2();$data='我的数据';//要签名的字符串$strSign=$rsa2->createSign($data);//生成签名var_dump($strSign);$is_ok=$rsa2->verifySign($data,$sign);//验证签名var_dump($is_ok);相关推荐:PHP使用非对称加密算法(RSA)浅谈数据加密技术Thanks~一起学习
