1. 暗号化と復号化の最初のステップは、公開キーと秘密キーのペアを生成することです。秘密キーで暗号化されたコンテンツは、公開キーで復号化できます (逆も同様です)。
オープン ソースの RSA キーをダウンロードします。 openssl 生成ツール (通常は Linux システム (すべてこのプログラムに付属) を使用し、それを別のフォルダーに解凍し、bin ディレクトリに入り、次のコマンドを実行します:
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
最初のコマンドは元の RSA 秘密鍵ファイル rsa_private_key.pem を生成し、2 番目のコマンドはコマンドは元の RSA 秘密鍵を pkcs8 形式に変換し、3 番目の項目は RSA 公開鍵 rsa_public_key.pem を生成します
上記から、対応する公開鍵は秘密鍵を通じて生成できることがわかります。そのため、秘密鍵 private_key を使用します.pem をサーバー側に配置し、公開鍵を Android や iOS などのフロントエンドに配布します
2. 生成された公開鍵と秘密鍵を php での暗号化と復号に使用し、コードを直接アップロードします
$private_key = '-----RSA 秘密鍵を開始----- -
MIICXQIBAAKBgQC3/ /SR2TXWRC2Dysx8vNGLQT3Y7LDU9+LBLI6E1KS5LFC5JL - TGF7KBTSKBM3OUEHWQP1ZJ85GIB2KLBD6 H4WRBBHA2XE1SQ21ykja/
/IRIA3ZQFXGV/QEKYGOX+XALVoolzqdwh76O2N1VP1D+TD3AMHSK7QIDAQAB - AOGBAKH14BMITESQD4PYWODWOPECLJVKB7IKRVXVDKP1X IJNGKH h2HSYHQSLPSLPS GYJ1M/XKDNGINWALVD3BOKKGKG1BZN7PXT+HERQXAVWS6
-
-
- Lhakea3pWGPVXGLIWL
3H7QlyzlrlrlRBFRURN4Cyl4uyaakokKavzly04glle8yCGOC2DZL4EIL4L/+X/Gaq - Deju M6usqowybewhyyhh /OTV1A3SQCCCE1F+
- qbAclCqeNiHajCcDmgYJ53LfIgyv0wCS54kCQAXaPkaHclRkQlAdqUV5IWYyJ25f
oiq+Y8SgCCs73qixrU1YpJy9yKA/meG9smsl4Oh9IOIGI+zU ygh9YdSmEq0CQQC2 -
4G3IP2G3lNDRdZIm5NZ7PfnmyRabxk/UgVUWdk47IwTZHFkdhxKfC8QepUhBsAHL -
QjifGXY4eJKUBm3FpDGJAkAFwUxYssiJjvrHwnHFbg0 rFkvvY63OSm nRxiL4X6EY -
yI9lblCsyfpl25l7l5zmJrAHn45zAiOoBrWqpM5edu7c -
--- --END RSA 秘密鍵-----' -
-
$public_key = '-- ---BEGIN 公開鍵----- -
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC3//sR2tXw0wrC2DySx8vNGlqt -
3Y7ldU9+LBLI6e1KS5lfc5jlTGF7KBTSkCHBM3ouEHWq p1ZJ85iJe59aF5gIB2kl -
Bd6h4wrbbHA2XE1sq21ykja/ Gqx7/IRia3zQfxGv/qEkyGOx+XALVoOlZqDwh76o -
2n1vP1D+tD3amHsK7QIDAQAB -
-----END PUBLIC KEY-- ---';-
-
- //echo $private_key;
$pi_key=openssl_pkey_get_private($private_key); //この関数は、秘密鍵が利用可能かどうかを判断するために使用でき、リソース ID を返すことができます リソース ID - $pu_key= openssl_pkey_get_public($public_key);//この関数は、公開鍵が利用可能かどうかを判断するために使用できます
print_r($pi_key);echo "n"; echo "
";
print_r($pu_key); echo "
";
echo "
";
$data='php ras 暗号化アルゴリズム';$encrypted = "";
echo "暗号化されたソース データ: "
";
echo "private key encrypt:n"; echo "
";
openssl_private_encrypt($data,$encrypted,$pi_key );//秘密鍵暗号化
$encrypted =base64_encode($encrypted);//暗号化されたコンテンツ通常、ネットワーク間で URL を介して送信する場合は、base64 エンコードが URL に安全であるかどうかに注意してください。 echo 'After private key encrypted:'.$encrypted."n"; ;echo "
";
echo "public key decrypt:n"; echo "
" ;
openssl_public_decrypt(base64_decode($encrypted),$decrypted,$pu_key);// によって暗号化されたコンテンツ秘密鍵は公開鍵で復号できます
echo '公開鍵復号後:'.$decrypted."n"; echo "
";
echo "
";
echo " public key encrypt:n"; echo "
";
openssl_public_encrypt($data,$encrypted,$pu_key);// 公開鍵暗号化
$encrypted =base64_encode($encrypted);
echo $encrypted,"n "; echo "
";
echo "private key decrypt:n"; echo "
";
openssl_private_decrypt(base64_decode($encrypted),$decrypted,$pi_key);//秘密キーの復号化
echo $decrypted,"n"; echo "
";