php使用openssl來實現非對稱加密
使用非對稱加密主要是藉助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。
1.安裝openssl和php的openssl擴充套件
2.生成私鑰:openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護
openssl genrsa -out rsa_private_key.pem 1024
3.生成公鑰:rsa命令用於處理RSA金鑰、格式轉換和列印資訊
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
4.這裡我們使用私鑰加密,公鑰解密
<?php /** * 金鑰檔案的路徑 */ $privateKeyFilePath = 'rsa_private_key.pem'; /** * 公鑰檔案的路徑 */ $publicKeyFilePath = 'rsa_public_key.pem'; extension_loaded('openssl') or die('php需要openssl擴充套件支援'); (file_exists($privateKeyFilePath) && file_exists($publicKeyFilePath)) or die('金鑰或者公鑰的檔案路徑不正確'); /** * 生成Resource型別的金鑰,如果金鑰檔案內容被破壞,openssl_pkey_get_private函式返回false */ $privateKey = openssl_pkey_get_private(file_get_contents($privateKeyFilePath)); /** * 生成Resource型別的公鑰,如果公鑰檔案內容被破壞,openssl_pkey_get_public函式返回false */ $publicKey = openssl_pkey_get_public(file_get_contents($publicKeyFilePath)); ($privateKey && $publicKey) or die('金鑰或者公鑰不可用'); /** * 原資料 */ $originalData = '加密前hahahaha'; /** * 加密以後的資料,用於在網路上傳輸 */ $encryptData = ''; echo '原資料為:', $originalData, PHP_EOL; ///////////////////////////////用私鑰加密//////////////////////// if (openssl_private_encrypt($originalData, $encryptData, $privateKey)) { /** * 加密後 可以base64_encode後方便在網址中傳輸 或者列印 否則列印為亂碼 */ echo '加密成功,加密後資料(base64_encode後)為:', base64_encode($encryptData), PHP_EOL; } else { die('加密失敗'); } ///////////////////////////////用公鑰解密//////////////////////// /** * 解密以後的資料 */ $decryptData =''; if (openssl_public_decrypt($encryptData, $decryptData, $publicKey)) { echo '解密成功,解密後資料為:', $decryptData, PHP_EOL; } else { die('解密成功'); }
相關推薦
php使用openssl來實現非對稱加密
使用非對稱加密主要是藉助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。 1.安裝openssl和php的openssl擴充套件 2.生成私鑰:openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護 openssl g
go語言實現非對稱加密——RSA加密解密的實現
版權宣告:本文為作者原創,如需轉載,請註明出處 https://blog.csdn.net/weixin_42940826 非對稱加密簡介 什麼是非對稱加密 非對稱加密,顧名思義,是相對於對稱加密的一種加密方法,對稱加密是指加密與解密使用的是同一把祕鑰,而非對稱加
Java結合keytool實現非對稱加密和解密
非對稱加密 ascii 表示 import enc 通信 vat 方法 ports 在Java安全體系中,簽名屬於JAAS模塊,加解密屬於JCE模塊。keytool的使用keytool是JDK自帶的一個密鑰庫管理工具。這裏只用到了keytool的部分功能,包括生成密鑰對,導
java+JavaScript 實現 非對稱加密 rsa
java側是這樣的 package com.tech.sandu.dal.utils; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutp
php使用openssl來實現RSA(非對稱加密)
使用非對稱加密主要是藉助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。 1.安裝openssl和PHP的openssl擴充套件 2.生成私鑰:openssl genrsa 用於
如何使用gpg工具實現公鑰加密(對稱加密和非對稱加密)?
gpg工具 對稱加密 公鑰加密 非對稱加密 使用gpg實現公鑰加密【對稱加密】1、 對稱加密file文件gpg -c filels file.gpg------------------------對稱加密過程------------------------輸入口令,兩次,例如centos再查看
非對稱加密演算法:實現ssh免密碼登入
**描述:利用非對稱加密演算法,實現兩臺主機之間可以免密碼直接登入 ,如下圖:** 整個實驗的原理如下圖: 具體步驟如下: 1、先準備好實驗需要的環境(兩臺虛擬機器–A:192.168.72.73,B:192.168.72.23),此時,我們遠端登入主機B,
非對稱加密的簽名和驗籤、加密和解密的Java語言實現
本文采用java.security包的簽名和驗籤。採用A的私鑰簽名傳送至B,B採用A的公鑰進行驗籤。 加解密可以私鑰加密、公鑰解密(或者公鑰加密、私鑰解密)。 一般用於銀行報文傳輸、支付寶、微信、銀行以及各大銀行的資料交換。 package com.example.demo; impo
非對稱加密過程詳解(基於RSA非對稱加密演算法實現)
1、非對稱加密過程: 假如現實世界中存在A和B進行通訊,為了實現在非安全的通訊通道上實現資訊的保密性、完整性、可用性(即資訊保安的三個性質),A和B約定使用非對稱加密通道進行通訊,具體過程如下: 說明: 國內目前使用雙證書體系,即
php實現openssl RSA非對稱加密解密
今天跟第三方公司對接別人看了我寫的文件當時文件寫的是DES加密,然後我的一個回答都讓我覺得對不起別人,我說了是AES加密,當時AES和RSA加解密的原理我不瞭解導致我也誤解了別人,今天就特意去理解了一下,下面就看一下RSA非對稱的加解密吧 首先先來說一下RSA和AES的區別
前端js,後臺python實現RSA非對稱加密
先熟悉使用 在後臺使用RSA實現祕鑰生產,加密,解密; # -*- encoding:utf-8 -*- import base64 from Crypto import Random from Crypto.Cipher import PKCS1_v1_5 as Ci
密碼學03--go語言與非對稱加密RSA演算法的實現
目錄 1.對稱加密的弊端 2.非對稱加密 2.1 非對稱加密使用場景 2.2 區分公私鑰 2.3 非對稱加密通訊流程 2.4 非對稱加密與對稱加密 3.非對稱加密RSA演算法 3.1 RSA演算法 3.2 RSA原理 3.3 RSA生成金鑰對流程
AES對稱加密+RSA非對稱加密實現
</pre>AesEncrypt.h<pre name="code" class="cpp">//enum KeySize { Bits128, Bits192, Bits256 }; // key size, in bits, for construtor #define
非對稱加密RSA的C#實現
1.對稱加密演算法對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的金鑰(secret key)。對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。對稱加密通常使用的是相對較小的金鑰,一
JAVA實現RSA加密,非對稱加密演算法
RSA.java package org.icesnow.jeasywx.util.security; import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair;
Java實現Rsa非對稱加密
import org.bouncycastle.jce.provider.BouncyCastleProvider; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStre
Java語言的非對稱加密的實現
眾所周知,網際網路上的安全是非常重要的一個課題,如何讓我們的軟體,通訊協議更加安全,是每個程式設計師都需要思考的問題。 本文主要討論三種非對稱加密的情況。 1.私鑰加密-公鑰解密 2.公鑰加密-私鑰解密 3.私鑰簽名-公鑰驗證 產生金鑰對 無論上
c語言實現rsa nopadding非對稱加密演算法(openssl api方式),匹配java後端 bouncycastle
公私鑰: —–BEGIN PUBLIC KEY—– MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC32V2IAfotG8bZhPF8/Bx8y65g EDycAMyTWmvpPCfagEKORO/WvdkTYim7yhG/+
DH、RSA與ElGamal非對稱加密演算法實現及應用
1.對稱加密與非對稱加密概述 關於對稱加密與非對稱加密的概念這裡不再多說,感興趣可以看下我之前的幾篇文章,下面說一說兩者的主要區別。 對稱加密演算法資料安全,金鑰管理複雜,金鑰傳遞過程複雜,存在金鑰洩露問題。 非對稱加密演算法強度複雜、安全性依賴於演算法與金鑰。但是由於演算法複雜,使得非對稱演算法加解密速度沒
非對稱加密
數據加密 bytes codebase 私鑰 .get comm x509 公鑰 except 非對稱加密為數據的加密與解密提供了一個非常安全的方法,它使用了一對密鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰