php Rsa2签名算法类

Rsa2 签名,

生成SSL密钥

openssl genrsa -out rsa_private_key.pem 2048

将原始 RSA私钥转换为 pkcs8格式

 openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem

最后生成

openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

下面这个直接使用了字符串,需要保持字符串在同一行里面,然后通过wordwrap来打断,保证端点64位字符串

<?php

class KqRsa2
{
    public static $publicKey = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgwaG0pIjtyiPFAgT/vE8ehqaED1VftYejp5+7KTi23wVUQgSkP41Mtd0YYlYL7+rUbPFhSozQraXparhkbz9/O6FRUoxZ1bWBtxdB4GpZiMhuvpDPrYJJEDEIzKD3Vlp7AqbXJPKL9fjeSvwEl+ueBYGv+ElLJ407Qxt2EOFx1EHUoDQnxy00VIxiV3YNx2kZSLcBtsHUtRiZYN/C0e23Vmsll2MyCJL1eYge36y68YbXLEF/hJ6sXj0JYPomuovOT6AC1su6e56whAIEsUWxyJhNevb7raPzWVJbPNVD3SVwmhG1p9kJjXaROBwPbzCexwFsT89+WlkC6br3GB5XwIDAQAB';
    public static $privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCDBobSkiO3KI8UCBP+8Tx6GpoQPVV+1h6Onn7spOLbfBVRCBKQ/jUy13RhiVgvv6tRs8WFKjNCtpelquGRvP387oVFSjFnVtYG3F0HgalmIyG6+kM+tgkkQMQjMoPdWWnsCptck8ov1+N5K/ASX654Fga/4SUsnjTtDG3YQ4XHUQdSgNCfHLTRUjGJXdg3HaRlItwG2wdS1GJlg38LR7bdWayWXYzIIkvV5iB7frLrxhtcsQX+EnqxePQlg+ia6i85PoALWy7p7nrCEAgSxRbHImE169vuto/NZUls81UPdJXCaEbWn2QmNdpE4HA9vMJ7HAWxPz35aWQLpuvcYHlfAgMBAAECggEAdzAYtLP7iUF75dzzU5ZeTTSlsOAaRabBZTsIenwDYWUefve46+xSuE0FsTQe5FCWp1vA8cHRn345tJodV1V0NgFDeiRjjH2Rc+xBM/LfBeovZMcDJKiy6CeCRAJPsasEj5OWgEBwS9U3N6KgYBZpvxNKUIGeL1g7DOehhHjn2Mau4yG/izFmiIEL5AhKHiCPgViXxApvdfoFc9l2fV5o1/1k6DYl2qVCSoPeGeI81/iq8G5MCdcoGEeA7xSdmts/bOfd6m6ZkYiC5uXVSiKpMejHhjxeFxf3YxYqmYhnAD7EXz4nSTQj1X/BW6BoP4mNMvXUBp6atbZvDRQSl0IOAQKBgQDDHeBn3cKC+dsbSVa1vWnWQmBeq6G8VWWLVhuGQjeYlXu7fDE3gj6IwhfudfDB3agVNVCGcCAy4iVzm2rI4wyzCn+glGqmJZ568p7nKJlXv6hVoJXEa6xSFq2mBuTb+Vn1fjCmjMlyHIXTB+O8VmoqS5vnu4Oz8MO31qb1/jromQKBgQCr6PpnMCvyqG/9xNHB++x/hwlJbcPb0j6guPpo0PFy1LAyWWd/Yvk2KVpRxhF8R3akjTqWZhU+ZkadTJUECCUaCOz/RAsJqNItxwWwKu1HHe9siEPvTcQ8XGECa78LzlmKkFVHfPkRMGwvhR8KD8hwoCp6l2MtVJAUE3UsyMJUtwKBgEkeuSozgOF0oRfotAYHpdIVrefMih/6IMPG0SnPRuZ3npb0Q715odW+ZxmGOWNtnb/U6wh2nJp1BXP9mlcOP4QZOxsCg7UgA/QvWD1oiY7I1FzCgV3KvBlHRmwhyUJmf7/wOmsv9448AirDmiTKfZ68FwEQ1Jpqb+5FEuy9CXaBAoGBAKRmb2FTLhQnhMI5ASf0Fh13NChmslF8ZKwrej3W47CfOclMuq+WJSHothlRw9MIPKvs68R853//KzSu0itC5shZFNyhY7TfH/DrTcNFqhjCxf8S6XTm9+2JorQ/+jn+Ip9inEt7dm0705o2QpLKuTML2NPYBt6I6iho2zvy2fVNAoGAGXjgeXRu8CjnzDjupwAyGVG3uIYYh0dv48s+siw7eGZrG+Dx+feYQvVmiF/tqjUdySfQMyt2eb7N8fHmPQn7pVxZR2DO6iDskH5F2ZSexOobZudKhX6uUtSOmq1WCQlhiB4q4tMhn0T8OA6NmEKqMqrbp0WuaeeNNpqhxN7VlNU=";

    public static function getPrivateKey()
    {
        $privateKey = "-----BEGIN RSA PRIVATE KEY-----\n" .
            wordwrap(self::$privateKey, 64, "\n", true) .
            "\n-----END RSA PRIVATE KEY-----";
        return $privateKey;
    }

    public static function getPublicKey()
    {
        $publicKey = "-----BEGIN PUBLIC KEY-----\n" .
            wordwrap(self::$publicKey, 64, "\n", true) .
            "\n-----END PUBLIC KEY-----";
        return $publicKey;
    }

    public static function sign($data)
    {
        openssl_sign($data, $sign, self::getPrivateKey(), OPENSSL_ALGO_SHA256);
        $sign = base64_encode($sign);
        return $sign;
    }

    public static function verify($data, $sign)
    {
        $r = openssl_verify($data, base64_decode($sign), self::getPublicKey(), OPENSSL_ALGO_SHA256);
        return $r;
    }

}

?>

使用

require_once('KqRsa2.class.php');
$data='a=2';
$sign=KqRsa2::sign($data);
//echo $sign;
$r=KqRsa2::verify($data,$sign);

if($r)
{
    echo '<br/>ok';
}else
{
    echo '<br/>fail';
}
```

猜你喜欢

转载自blog.csdn.net/weixin_33713350/article/details/87277844