標籤:運行 ref file cipher title targe ssl gen echo
linux下命令直接使用openssl命令產生公開金鑰和私密金鑰,參考openssl 命令如下
# 產生1024位RSA私匙,用3DES加密它,口令為123,# 輸出到檔案rsa_private_key.pem# openssl genrsa -out rsa_private_key.pem# 從檔案rsa_private_key.pem讀取私匙# 產生的公開金鑰匙輸出到檔案rsa_public_key.pem# openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem# 用公開金鑰匙rsapublickey.pem加密檔案data.txt,# 輸出到檔案cipher.txt# openssl rsautl -encrypt -pubin -inkey rsa_public_key.pem -in data.txt -out cipher.txt# 使用私密金鑰匙rsa_private_key.pem解密密文cipher.txt,# 輸出到檔案data.txt# openssl rsautl -decrypt -inkey rsa_private_key.pem -in cipher.txt -out data.txt# 用私密金鑰匙rsaprivatekey.pem給檔案plain.txt簽名,# 輸出到檔案signature.bin# openssl rsautl -sign -inkey rsa_private_key.pem -in data.txt -out signature.bin# 用公開金鑰匙rsa_public_key.pem驗證簽名signature.bin,# 輸出到檔案plain.txt# openssl rsautl -verify -pubin -inkey rsa_public_key.pem -in signature.bin -out data
產生公開金鑰和私密金鑰檔案
# openssl genrsa -out rsa_private_key.pem# openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
使用PHP讀取公開金鑰和私密金鑰對資料進行加密和解密
<?php$pub_file = file_get_contents(‘rsa_public_key.pem‘);echo "讀取公開金鑰檔案\n:$pub_file\n"; $pub_key = openssl_get_publickey($pub_file); var_dump($pub_key); $encrypt_result = openssl_public_encrypt(‘yangxunwu‘, $encrypted, $pub_key); if($encrypt_result){ echo "\n加密資料成功\n".json_encode($encrypted)."\n"; }else{ die("\n加密資料失敗".openssl_error_string()."\n"); } $pri_file = file_get_contents(‘rsa_private_key.pem‘); echo "讀取私密金鑰檔案\n$pri_file\n"; $pri_key = openssl_get_privatekey($pri_file); var_dump($pri_key); $decrypt_result = openssl_private_decrypt($encrypted, $decrypted, $pri_key); if($decrypt_result){ echo "\n解密資料成功\n".$decrypted."\n"; }else{ die("\n解密資料失敗".openssl_error_string()."\n"); }
運行:
http://man.linuxde.net/openssl
PHP 使用openssl 進行加密 解密