PHP 使用openssl 進行加密 解密

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

生成公鑰和私鑰文件php

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

使用PHP讀取公鑰和私鑰對數據進行加密和解密linux

<?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");
        	
        }

運行:json

http://man.linuxde.net/openssl
相關文章
相關標籤/搜索