> 백엔드 개발 > PHP 튜토리얼 > PHP RSA2 서명 알고리즘

PHP RSA2 서명 알고리즘

*文
풀어 주다: 2023-03-18 08:26:02
원래의
4374명이 탐색했습니다.

RSA2 서명 알고리즘은 일부 프로젝트에서 사용됩니다. 오늘은 PHP에서 RSA2 서명 알고리즘을 사용하는 방법을 살펴보겠습니다.

RSA2란 무엇인가요?

RSA2는 원래 SHA1WithRSA 서명 알고리즘을 기반으로 하며 SHA256WithRSA를 지원하는 새로운 서명 알고리즘을 추가합니다.

이 알고리즘은 다이제스트 알고리즘 측면에서 SHA1WithRSA보다 강력한 보안 기능을 가지고 있습니다.

SHA1WithRSA 서명 알고리즘은 계속 지원되지만 애플리케이션 보안을 위해 SHA256WithRSA 서명 알고리즘을 사용하는 것이 좋습니다.

어떤 회사에서 사용하고 있나요?

Alipay 및 Sina Weibo와 같은 일부 대기업의 개발 플랫폼.

개인 키 및 공개 키 생성

//生成原始 RSA私钥文件
openssl genrsa -out rsa_private_key.pem 1024
//将原始 RSA私钥转换为 pkcs8格式
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
//生成RSA公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
//我们将私钥rsa_private_key.pem用在服务器端,公钥发放给android跟ios等前端。
로그인 후 복사

PHP-RSA2 서명 확인

class Rsa2
{
    private static $PRIVATE_KEY = 'rsa_private_key.pem 内容';
    private static $PUBLIC_KEY  = 'rsa_public_key.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
                    );
    }
}
로그인 후 복사

PHP 호출

require_once "Rsa2.php";
$rsa2 = new Rsa2();
$data = 'my data'; //待签名字符串
$strSign = $rsa2->createSign($data);      //生成签名
var_dump($strSign);
$is_ok = $rsa2->verifySign($data, $sign); //验证签名
var_dump($is_ok);
로그인 후 복사

관련 읽기:

이진 검색 알고리즘의 분석 예 PHP

PHP가 기계 학습을 위해 Naive Bayes 알고리즘을 구현하는 방법

PHP가 Hill 정렬 알고리즘을 구현하는 방법에 대한 자세한 분석

위 내용은 PHP RSA2 서명 알고리즘의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿