php验证rsa公钥与私钥是否正确代码
代码语言:php
所属分类:加密解密
代码描述:php验证rsa公钥与私钥是否正确代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<?php /** * RSA加密 * * @param string $data 待加密数据 * @param string $publicKey 公钥 * @return string|false 加密结果 * @author SC */ function rsaEncrypt($data, $publicKey) { $ciphertext = ''; $publicKey = openssl_pkey_get_public($publicKey); $data = str_split($data, 117); // 加密的数据长度限制为比密钥长度少11位,如128位的密钥最多加密的数据长度为117 foreach ($data as $d) { openssl_public_encrypt($d, $crypted, $publicKey); // OPENSSL_PKCS1_PADDING $ciphertext .= $crypted; } openssl_free_key($publicKey); return base64_encode($ciphertext); } /** * RSA解密 * * @param string $data 待解密数据 * @param string $privateKey 私钥 * @param string 解密结果 * @author SC */ function rsaDecrypt($data, $privateKey) { $plaintext = ''; $privateKey = openssl_pkey_get_private($privateKey); $data = base64_decode($data); $data = str_split($data, 128); foreach ($data as $d) { $r = openssl_private_decrypt($d, $decrypted, $privateKey); $plaintext .= $decrypted; } return $plaintext; } /** * 生成RSA签名 * * @param string $data 待签名数据 * @param string $privateKey 私钥 * @return string 签名 * @author SC */ function rsaSign($data, $privateKey) { $privateKey = openssl_get_privatekey($privateKey); openssl_sign($data, $sign, $privateKey, OPENSSL_ALGO_MD5); // OPENSSL_ALGO_MD5 or OPENSSL_ALGO_SHA1(default) openssl_free_key($privateKey); return base64_encode($sign); } /** * 检验RSA签名 * * @param string $data 待签名数据 * @param string $sign 待验证签名 * @param string $publicKey 公钥 * @return bool 检验结果 * @author SC */ function rsaVerify($data, $sign, $publicKey) { $publicKey = openssl_get_publickey($publicKey); $result = openssl_verify($data, base64_decode($sign), $publicKey, OPENSSL_ALGO_MD5); // OPENSSL_ALGO_MD.........完整代码请登录后点击上方下载按钮下载查看
网友评论0