摘要:非對稱加密至于什么是非對稱加密,這里就不說啦,大家谷歌去吧。這里說明的是,最近在做一個對外的充值加密服務,那么涉及到這個加密的處理,中間遇到幾個小問題,所以記錄下,方便自己下次查閱。
非對稱加密
至于什么是非對稱加密,這里就不說啦,大家谷歌去吧。這里說明的是,最近在做一個對外的充值加密服務,那么涉及到這個加密的處理,中間遇到幾個小問題,所以記錄下,方便自己下次查閱。
詳細代碼_keyPath = $path; } /** * 創建公鑰和私鑰 * */ public function createKey() { $config = [ "config" => "D:wampinapacheapache2.4.9confopenssl.cnf", "digest_alg" => "sha512", "private_key_bits" => 4096, "private_key_type" => OPENSSL_KEYTYPE_RSA, ]; // 生成私鑰 $rsa = openssl_pkey_new($config); openssl_pkey_export($rsa, $privKey, NULL, $config); file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR . "priv.key", $privKey); $this->_privKey = openssl_pkey_get_public($privKey); // 生成公鑰 $rsaPri = openssl_pkey_get_details($rsa); $pubKey = $rsaPri["key"]; file_put_contents($this->_keyPath . DIRECTORY_SEPARATOR . "pub.key", $pubKey); $this->_pubKey = openssl_pkey_get_public($pubKey); } /** * 設置私鑰 * */ public function setupPrivKey() { if (is_resource($this->_privKey)) { return true; } $file = $this->_keyPath . DIRECTORY_SEPARATOR . "priv.key"; $privKey = file_get_contents($file); $this->_privKey = openssl_pkey_get_private($privKey); return true; } /** * 設置公鑰 * */ public function setupPubKey() { if (is_resource($this->_pubKey)) { return true; } $file = $this->_keyPath . DIRECTORY_SEPARATOR . "pub.key"; $pubKey = file_get_contents($file); $this->_pubKey = openssl_pkey_get_public($pubKey); return true; } /** * 用私鑰加密 * */ public function privEncrypt($data) { if (!is_string($data)) { return null; } $this->setupPrivKey(); $result = openssl_private_encrypt($data, $encrypted, $this->_privKey); if ($result) { return base64_encode($encrypted); } return null; } /** * 私鑰解密 * */ public function privDecrypt($encrypted) { if (!is_string($encrypted)) { return null; } $this->setupPrivKey(); $encrypted = base64_decode($encrypted); $result = openssl_private_decrypt($encrypted, $decrypted, $this->_privKey); if ($result) { return $decrypted; } return null; } /** * 公鑰加密 * */ public function pubEncrypt($data) { if (!is_string($data)) { return null; } $this->setupPubKey(); $result = openssl_public_encrypt($data, $encrypted, $this->_pubKey); if ($result) { return base64_encode($encrypted); } return null; } /** * 公鑰解密 * */ public function pubDecrypt($crypted) { if (!is_string($crypted)) { return null; } $this->setupPubKey(); $crypted = base64_decode($crypted); $result = openssl_public_decrypt($crypted, $decrypted, $this->_pubKey); if ($result) { return $decrypted; } return null; } /** * __destruct * */ public function __destruct() { @fclose($this->_privKey); @fclose($this->_pubKey); } } ?>測試
$rsa = new Rsa("ssl-key"); //私鑰加密,公鑰解密 echo "待加密數據:segmentfault.com "; $pre = $rsa->privEncrypt("segmentfault.com"); echo "加密后的密文: " . $pre . " "; $pud = $rsa->pubDecrypt($pre); echo "解密后數據:" . $pud . " "; //公鑰加密,私鑰解密 echo "待加密數據:segmentfault.com "; $pue = $rsa->pubEncrypt("segmentfault.com"); echo "加密后的密文: " . $pue . " "; $prd = $rsa->privDecrypt($pue); echo "解密后數據:" . $prd;重要問題
這里特別要注意的是在配置中要指定openssl.cnf的文件地址,或者設置個OPENSSL_CONF全局變量就可以了。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21206.html
摘要:我們不會提及任何糟糕的密碼庫的。僅對而言如果你一定要安裝對稱密鑰加密,請使用上述的的密碼庫。的密碼庫為你提供了認證加密,而的實施并不會驗證密文。當前的最佳密碼庫之一是內建的。這種散列算法對的編程者或企業來說都是穩定有效的。 如果本文中的術語讓你感到疑惑,請先參閱密碼學術語及概念一文。 密碼學不是魔術。加密一個應用程序并不能保證它在襲擊下的安全(特別是在你沒有設置驗證密文的情況下)。但如...
摘要:非對稱加密與對稱加密相對的是非對稱加密,非對稱加密的核心思想是使用一對相對的密匙,分為公匙和私匙,私匙自己安全保存,而將公匙公開。 引言 互聯網的發展史上,安全性一直是開發者們相當重視的一個主題,為了實現數據傳輸安全,我們需要保證:數據來源(非偽造請求)、數據完整性(沒有被人修改過)、數據私密性(密文,無法直接讀取)等。雖然現在已經有SSL/TLS協議實現的HTTPS協議,但是因在客戶...
摘要:算法公鑰加密算法是年由羅納德李維斯特阿迪薩莫爾和倫納德阿德曼一起提出的。是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被推薦為公鑰數據加密標準。 上篇文章介紹了對稱加密的原理,但是它的最大問題就是加密和解密的密鑰是相同的,并且不能保證密鑰能安全的送到雙方手里,即使安全的送到雙方手里,免不了內部會有臥底的存在 非對稱加密 既然有對稱加密,那么自然會聯想到非...
摘要:所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。非對稱加密算法由于對稱加密在通信加密領域的缺陷,年和提出了非對稱加密的概念。非對稱加密,其主要缺點之一就是慢,適合加密少量數據。 1. 加密的目的 加密不同于密碼,加密是一個動作或者過程,其目的就是將一段明文信息(人類或機器可以直接讀懂的信息)變為一段看上去沒有任何意義的字符,必須通過事先約定的解密規則才能將...
摘要:所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。非對稱加密算法由于對稱加密在通信加密領域的缺陷,年和提出了非對稱加密的概念。非對稱加密,其主要缺點之一就是慢,適合加密少量數據。 1. 加密的目的 加密不同于密碼,加密是一個動作或者過程,其目的就是將一段明文信息(人類或機器可以直接讀懂的信息)變為一段看上去沒有任何意義的字符,必須通過事先約定的解密規則才能將...
閱讀 1631·2021-10-27 14:13
閱讀 1868·2021-10-11 10:59
閱讀 3367·2021-09-24 10:26
閱讀 1925·2019-08-30 12:48
閱讀 3041·2019-08-30 12:46
閱讀 2033·2019-08-30 11:16
閱讀 1414·2019-08-30 10:48
閱讀 2740·2019-08-29 16:54