RSA2 署名アルゴリズムはいくつかのプロジェクトで使用されます。今日は、PHP での RSA2 署名アルゴリズムの使用について見ていきます。
RSA2とは何ですか?
RSA2 は、オリジナルの SHA1WithRSA 署名アルゴリズムに基づいており、SHA256WithRSA をサポートする新しい署名アルゴリズムが追加されています。
このアルゴリズムは、ダイジェスト アルゴリズムの点で SHA1WithRSA よりも強力なセキュリティ機能を備えています。
SHA1WithRSA 署名アルゴリズムは引き続きサポートされますが、アプリケーションのセキュリティのため、SHA256WithRSA 署名アルゴリズムを使用することを強くお勧めします。
どのような企業が使用していますか?
Alipay や Sina Weibo など、一部の大企業の開発プラットフォーム。
秘密鍵と公開鍵を作成する
1 2 3 4 5 6 7 | openssl genrsa -out rsa_private_key.pem 1024
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
|
ログイン後にコピー
PHP-RSA2署名検証
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | class Rsa2
{
private static $PRIVATE_KEY = 'rsa_private_key.pem 内容';
private static $PUBLIC_KEY = 'rsa_public_key.pem 内容';
private static function getPrivateKey()
{
$privKey = self:: $PRIVATE_KEY ;
return openssl_pkey_get_private( $privKey );
}
private static function getPublicKey()
{
$publicKey = self:: $PUBLIC_KEY ;
return openssl_pkey_get_public( $publicKey );
}
public function createSign( $data = '')
{
if (! is_string ( $data )) {
return null;
}
return openssl_sign(
$data ,
$sign ,
self::getPrivateKey(),
OPENSSL_ALGO_SHA256
) ? base64_encode ( $sign ) : null;
}
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呼び出し
1 2 3 4 5 6 7 | 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 );
|
ログイン後にコピー
関連書籍:
実装された二分探索アルゴリズムの分析例by PHP
PHP が機械学習用の単純ベイズ アルゴリズムを実装する方法
PHP がヒル ソート アルゴリズムを実装する方法の詳細な分析
以上がPHP RSA2 署名アルゴリズムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。