使用 openssl 的 RSA

3 篇文章 / 0 new
最新文章
author
使用 openssl 的 RSA
1. 產生 RSA 金鑰
進入 dos模式到 php5\extras\openssl 目錄下, 進行下列操作

參數說明 openssl rsautl --help
產生 1024bit 的 private key 輸入 openssl genrsa -out private.pem 1024
由private key 產生 public key 輸入 openssl rsa -in private.pem -out public.pem -outform PEM -pubout

執行範例
$dir = 'pem檔路徑';
$data = "A secret message for Bob";
// 從 PEM 檔取出金鑰
$publicKey = openssl_get_publickey(file_get_contents("$dir/public.pem"));
$privateKey = openssl_get_privatekey(file_get_contents("$dir/private.pem"));
// RSA加密 + Base64 編碼
openssl_private_encrypt($data,$crypttext,$privateKey);
$crypttext = base64_encode($crypttext);
print "密文\n";
print "$crypttext\n";
// Base64 解碼+ RSA解密
$crypttext = base64_decode($crypttext);
openssl_public_decrypt($crypttext,$newsource,$publicKey);
print "原文\n";
print "$newsource";
openssl_free_key($publicKey);
openssl_free_key($privateKey);
author
兩個常用指令

兩個常用指令

openssl rsa -in pribate key.pem -noout -modulus

將公鑰以數值(BigInteger)型態呈現

openssl rsa -in key.pem -text -noout

以可讀的文字型態呈現, 原 openssl 產出的是經過 base64 編碼後的資料檔

author
以數值型態呈現的方式

指令碼

openssl asn1parse -out temp.ans -i -inform PEM < key.pem
    0:d=0  hl=4 l= 314 cons: SEQUENCE
    4:d=1  hl=2 l=   1 prim:  INTEGER           :00
    7:d=1  hl=2 l=  65 prim:  INTEGER(公鑰)     :9E283DBD96B910E70DDADDAD23BED4C3...
   74:d=1  hl=2 l=   3 prim:  INTEGER           :010001
   79:d=1  hl=2 l=  64 prim:  INTEGER(密鑰)     :4C47CA6CA68E416AE9D5F5372C019F42...
  145:d=1  hl=2 l=  33 prim:  INTEGER           :D17025E384526AE6DF06F03F50C1DF77
  .....
發表回應前,請先登入
Free Web Hosting