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