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';
}
```