1. 程式人生 > >關於openssl rsa php c++ js 協同加密解密的一些資源連結

關於openssl rsa php c++ js 協同加密解密的一些資源連結

http://blog.csdn.net/clh604/article/details/20224735
1、加密解密的第一步是生成公鑰、私鑰對,私鑰加密的內容能通過公鑰解密(反過來亦可以)
 
下載開源RSA金鑰生成工具openssl(通常Linux系統都自帶該程式),解壓縮至獨立的資料夾,進入其中的bin目錄,執行以下命令:
 

openssl genrsa -out rsa_private_key.pem 1024
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt -out private_key.pem
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
 
rsa pub格式
openssl rsa -in rsa_private_key.pem -RSAPublicKey_out -out rsa_public_key.pem


第一條命令生成原始 RSA私鑰檔案 rsa_private_key.pem,第二條命令將原始 RSA私鑰轉換為 pkcs8格式,第三條生成RSA公鑰 rsa_public_key.pem
 從上面看出通過私鑰能生成對應的公鑰,因此我們將私鑰private_key.pem用在伺服器端,公鑰發放給android跟ios等前端
WARNING: can't open config file: /usr/local/ssl/openssl.cnf
問題解決辦法
http://blog.csdn.net/atco/article/details/7587739
openssl.cfg
set OPENSSL_CONF=openssl.cnf
set OPENSSL_CONF=openssl.cfg


php使用自定義cnf方法
openssl.cnf
還有注意此目錄下的一個readme-ssl.txt的一段程式碼,
$configargs = array(
"config" => "D:/php/extras/openssl/openssl.cnf"
);

$configargs = array(
"config" => "path/to/openssl.cnf"
);
$res = openssl_pkey_new($configargs);


問題
Warning: openssl_pkey_export(): cannot get key from parameter 1 in

OpenSSL Library Version

OpenSSL 1.0.1e 11 Feb 2013

OpenSSL Header Version

OpenSSL 0.9.8y 5 Feb 2013

php+js+rsa

openssl asn1parse -out temp.ans -i -inform PEM < rsa_private_key.pem
linux下
openssl rsa -in /usr/local/apache2/htdocs/rsa_test/rsa_test_ok/private_key -text
openssl asn1parse -i -inform PEM < /usr/local/apache2/htdocs/rsa_test/rsa_test_ok/private_key


genrsa -out rsa_private_key.pem 1024


根據樣例
openssl rsa -in rsa_private_key.pem -text -noout
openssl rsa -in private.pem -text -out tmp.txt -noout
openssl rsa -in rsa_private_key.pem -text -out tmp.txt
linux下
openssl rsa -in /usr/local/apache2/htdocs/rsa_test/rsa_test_ok/private_key -text

RSA PRIVATE KEY  php用的是PRIVATE KEY
http://www.2cto.com/Article/201308/239148.html
2)把RSA私鑰轉換成PKCS8格式
 輸入命令pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt,並回車
 得到生成功的結果,這個結果就是PKCS8格式的私鑰

測試程式碼
pkcs8 -topk8 -inform PEM -in private.pem -outform PEM –nocrypt
okok
openssl pkcs8 -topk8 -inform PEM -in private.pem -outform PEM -nocrypt -out private_key.pem
openssl rsa -in private.pem -pubout -out rsa_public_key.pem


php+js+rsa

openssl asn1parse -out temp.ans -i -inform PEM < rsa_private_key.pem
linux下
openssl rsa -in /usr/local/apache2/htdocs/rsa_test/rsa_test_ok/private_key -text
openssl asn1parse -i -inform PEM < /usr/local/apache2/htdocs/rsa_test/rsa_test_ok/private_key


genrsa -out rsa_private_key.pem 1024


根據樣例
openssl rsa -in rsa_private_key.pem -text -noout
openssl rsa -in private.pem -text -out tmp.txt -noout
openssl rsa -in rsa_private_key.pem -text -out tmp.txt
linux下
openssl rsa -in /usr/local/apache2/htdocs/rsa_test/rsa_test_ok/private_key -text

RSA PRIVATE KEY  php用的是PRIVATE KEY
http://www.2cto.com/Article/201308/239148.html
2)把RSA私鑰轉換成PKCS8格式
 輸入命令pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt,並回車
 得到生成功的結果,這個結果就是PKCS8格式的私鑰

測試程式碼
pkcs8 -topk8 -inform PEM -in private.pem -outform PEM –nocrypt
okok
openssl pkcs8 -topk8 -inform PEM -in private.pem -outform PEM -nocrypt -out private_key.pem
openssl rsa -in private.pem -pubout -out rsa_public_key.pem

相關推薦

關於openssl rsa php c++ js 協同加密解密一些資源連結

http://blog.csdn.net/clh604/article/details/20224735 1、加密解密的第一步是生成公鑰、私鑰對,私鑰加密的內容能通過公鑰解密(反過來亦可以)   下載開源RSA金鑰生成工具openssl(通常Linux系統都自帶該程式)

c#中base64加密解密

stat mon 註意 pac enc return mba try encode using System; using System.Text; namespace Common { /// <summary> /// 實現Base64加密解密 ///

C# 實現AES加密--解密

bsp 密文 rem adding gets manage string sys cipher /// <summary> /// AES 加密 /// </summary> ///

js base64加密解密

element from window enc color strong new abcde col var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567

javascript與php使用aes進行加密/解密

cbc base scrip == pad encode ini echo script javascript:a. 下載: npm install crypto-js b. 代碼: var CryptoJS = require("crypto-js"); // 加密

java和c#的AES256加密解密方法

java CyptoClient.java中程式碼 package ***.security.crypto; import java.util.Map; import com.alibaba.fastjson.JSONObject; import com.google.common.

C#中AES256加密解密方法

/// <summary>         /// AES加密         /// </summary>         /// <param n

PHP 中實現 RC4加密解密

RC4演算法 RC4加密演算法是大名鼎鼎的RSA三人組中的頭號人物Ron Rivest在1987年設計的金鑰長度可變的流加密演算法簇。RC4演算法是一種在電子資訊領域加密的技術手段,用於無線通訊網路,是一種電子密碼,只有經過授權(繳納相應費用)的使用者才能享受該服務。 RC4於1987年

js base64加密 解密

/**base64 */ //下面是64個基本的編碼 var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var base64DecodeChars = new Arr

PHP針對數字的加密解密類,可直接使用

<?phpnamespace app;/** * 加密解密類 * 該演算法僅支援加密數字。比較適用於資料庫中id欄位的加密解密,以及根據數字顯示url的加密。 * @author 深秋的竹子 * @ver

js 字串加密解密

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>網頁加密及解密</title> <meta name="author" cont

介紹幾個PHP 自帶的加密解密函式

PHP 自帶的加密解密函式 目前經常使用的加密函式有:md5(), sha1(), crypt(), base64_encode(), urlencode() 。 其中 md5(), sha1(), c

加密RSA前端與後臺的加密&解密

1. 前言 本問是根據網上很多文章的總結得到的。 2. 介紹   RSA加密演算法是一種非對稱加密演算法。   對極大整數做因數分解的難度決定了RSA演算法的可靠性。換言之,對一極大整數做因數分解愈困難,RSA演算法愈可靠。假如有人找到一種快速因數分解的演算法的話

C# 簡單的加密解密方法

C# 簡單的加密解密方法 兩個方法如下: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Security.Cryptography; usi

PHP正確進行AES加密解密的方法

廢話不多說,直接上程式碼 <?php namespace Aes; class Aes { /** * var string $method 加解密方法,可通過openssl_get_cipher_methods()獲得 */

C#之AES加密解密

高階加密標準(AES,Advanced Encryption Standard)為最常見的對稱加密演算法(微信小程式加密傳輸就是用這個加密演算法的)。對稱加密演算法也就是加密和解密用相同的金鑰,具體的加密流程如下圖:(原理:轉自https://blog.csdn.net/qq

C#寫Des加密解密演算法

馬上就要實習了,求大大們介紹工作。QQ:1028962069 原始碼地址 http://download.csdn.net/detail/h1028962069/8618367 我只寫關鍵程式碼。 介面如下 類 using System; using System.Col

小程式,前端,js , AES加密解密,java後端加密解密

最近涉及到小程式前端加密解密。網上了解了一下,程式碼要麼是js,要麼是java後端。沒有一套前後端加密解密的演算法。自己整理了一下。希望對大家有用 解密和加密的方式很多,我用到的AES 小程式前端程式碼 var fun_aes = require('../../utils/aes.js') Pag

Java中使用OpenSSL RSA公私鑰進行資料加解密儲存

使用openSSL 生成公私鑰可以參考作者 JackCousins 的文章 @http://blog.csdn.net/chaijunkun/article/details/7275632 寫的非常好,鼓掌 但在使用的過程中發現 ,例如 我在手機中可以使用公鑰簽名,伺服器

AES--js實現加密解密

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <me