openssl進行非對稱加密和對稱加密的php示例

2021-07-15 00:02:59 字數 1645 閱讀 6121

確保開啟php的openssl擴充套件:extension=php_openssl.dll

<?php

/*** @file**/

header("content-type:text/html; charset=utf-8");

$key_file = "yunkeserver.key"; //私鑰

$publickey_file = "yunkeserver.crt"; //證書檔案

//$publickey_file="server.crt";//和私鑰不匹配的證書檔案

$data_file = "msg.txt"; //待加密資料檔案

$private_key = openssl_get_privatekey(file_get_contents($key_file)); //獲取私鑰 非字串型別  為資源型別

echo "私鑰為:

" . $private_key . "

";$public_key = openssl_get_publickey(file_get_contents($publickey_file)); //獲取公鑰 非字串型別  為資源型別

echo "公鑰為:

" . $public_key . "

";/*

$str_key = ''; //key的字串表示

if (openssl_pkey_export($private_key, $str_key)) else

echo "";}

*///print_r(openssl_pkey_get_details ( $public_key )); //輸出金鑰的詳細資訊 這裡可以看出私鑰裡面是包含公鑰的

$data = file_get_contents($data_file);

echo "明碼資料為:

" . $data . "

";$crypted_data = null; //密文

if (openssl_private_encrypt($data, $crypted_data, $private_key)) else

}$decrypted_data = null; //加密還原後的明文

if (openssl_public_decrypt($crypted_data, $decrypted_data, $public_key)) else

}//以上為非對稱加密   以下演示對稱加密

$key="123456"; //設定乙個共享密碼

$cipher='';//加密演算法

$arr=openssl_get_cipher_methods(); //獲取支援的加密演算法 陣列的key和值並沒有對應關係

$cipher=$arr[20];

echo "選擇的加密演算法是:$cipher

\n";

$value=openssl_encrypt($data , $cipher,$key); //第四引數openssl_raw_data輸出原始資料

echo "加密後的密文是:

".$value."

";$old_data=openssl_decrypt ( $value,$cipher, $key);

echo "解密還原的明文:

".$old_data."

";//print_r($arr);

使用openssl實現非對稱加密

使用 openssl 實現非對稱加密 since 2015 11 10 header content type text html charset utf 8 classrsa this keypath path 建立公鑰和私鑰 public functioncreatekey 設定私鑰 publi...

對稱加密和非對稱加密!

主要是對稱加密和非對稱加密兩種。可供各位參考 using system using system.collections.generic using system.linq using system.text using system.security.cryptography using syst...

對稱加密和非對稱加密!

對稱加密演算法 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,資料發信方將明文 原始資料 和加密金鑰一起經過特殊加密演算法處理後,使其變成複雜的加密密文傳送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的金鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文...