日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下OpenSSL的RSA密钥生成

發(fā)布時(shí)間:2025/7/14 linux 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下OpenSSL的RSA密钥生成 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

工具的安裝:

一.源碼安裝

OpenSSL Version:openssl-1.0.0e.tar.gz

------------------------安裝:

1、將下載的壓縮包放在根目錄,

2、在文件夾下解壓縮,

命令:tar -xzf ?openssl-openssl-1.0.0e.tar.gz

得到openssl-openssl-1.0.0e文件夾

3、進(jìn)入解壓的目錄:cd openssl-1.0.0e

4、設(shè)定Openssl 安裝,(?--prefix?)參數(shù)為欲安裝之目錄,也就是安裝后的檔案會(huì)出現(xiàn)在該目錄下:

執(zhí)行命令:./config? --prefix=/usr/local/openssl

5、執(zhí)行命令./config? -t

6.執(zhí)行make,編譯Openssl

----------------------完成安裝。

二,yum安裝

#yum install openssl* -y

?

?

1.生成秘鑰:(生成1024位的私鑰,不指定的話默認(rèn)2048位)

輸入“genrsa -out rsa_private_key.pem 1024”命令,回車后,在當(dāng)前?bin?文件目 錄中會(huì)新增一個(gè)?rsa_private_key.pem?文件,其文件為原始的商戶私鑰(請(qǐng)妥善保 存該文件,PHP?開發(fā)語言中需要使用該文件)

[root@wentao12 ~]# openssl genrsa -out rsa_private_key.pem 1024

?

2.生成公鑰:(根據(jù)這個(gè)私鑰生成公鑰)

輸入“rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem”命令回車 后,在當(dāng)前?bin?文件目錄中會(huì)新增一個(gè)?rsa_public_key.pem?文件,其文件為原始 的商戶公鑰(請(qǐng)妥善保存該文件,PHP?開發(fā)語言中需要使用該文件)

[root@wentao12 ~]# openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

3.生成PKCS8?編碼的私鑰

輸入命令“pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt”并回車,當(dāng)前界面中會(huì)直接顯示出生成結(jié)果

[root@wentao12 ~]# openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt

?

?

,把復(fù)制的內(nèi)容粘 貼進(jìn)一個(gè)新的記事本中,可隨意命名,只要知道這個(gè)是?PKCS8?格式的私鑰即可(請(qǐng) 妥善保存該文件)

?

經(jīng)過我測(cè)試就用屏幕打印的這個(gè)作為私鑰,

公鑰查看:#cat?rsa_public_key.pem

注意文件格式前后標(biāo)記符不能去掉,可以正常加密解密。

例子:

<?php /*** Created by PhpStorm.* User: Administrator* Date: 2018/4/1* Time: 1:50*///注意格式一定要有下面的標(biāo)識(shí)符 $pub_key = "-----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+p18S45D/xf+EpDpRDwMLp7Im edUzYhPUAy5orgPnOIwjUo7jDb6Zsn6axv5gDA+ooaxZoT+fXz2gNDhlvCWanLIv i0o2X6G5l1rCarb8irOQOyAP4Z3M8Pj9maaG3zwU251udcVTcLpV2q65sMKaJBOI jPpzwPFo+RU040k0kwIDAQAB -----END PUBLIC KEY-----"; $pri_key = "-----BEGIN RSA PRIVATE KEY----- MIICXAIBAAKBgQC+p18S45D/xf+EpDpRDwMLp7ImedUzYhPUAy5orgPnOIwjUo7j Db6Zsn6axv5gDA+ooaxZoT+fXz2gNDhlvCWanLIvi0o2X6G5l1rCarb8irOQOyAP 4Z3M8Pj9maaG3zwU251udcVTcLpV2q65sMKaJBOIjPpzwPFo+RU040k0kwIDAQAB AoGAcrevA2SeuOhgiWVwGZoY0QiEr5YbbSGUoLuRTzd17ckeuZpRk9mPWFgIygT2 xsA7I9K0K/JUoAbkw+LoFH8TeFtxrq28L3jZE8Xr5MTrxVb4sImWwsJ/+bEW51Zs 6bp03/2SIVwtl1SkH9zyJlEWlEhb41KGIm0dC1ctMKE2HEECQQD12wFNSCqOyOEU LffZKD/IqoHVU2RfGevft1/08OG7cVp+4YMZ+gRTsRYZDEkPTG8SjHxbTBxJ/EH/ qFDlOhrRAkEAxoVD+xJBRqu11uIXafd5reJrfTa0qwupYuTiH7c3EWPa5YRKg6Xk pTnUstvl0FBjwyTJ9iDTcChYFx2c/q1qIwJAWDAao3IDcfw0YFyszsRVPNGMiMzE 8CgIJ9NLJD1Tez0JzQFvWV4JN0wKNSnm+wnbvbeO0+DVNOS7d80UV2UkQQJAMDb7 rMXhPrXDgz4EK8NkNRwxuQaJWKWLbS5j0QohgMK8zlOT+WdYIdzq0MnhhfeQUzvj JTkRwUK7KloR4DTj+wJBAJwRkRVtyNKfH/nb6WkTAVqRjoecLJHIN/JT3UzgzD6X ybxwxyupVw8aK1QZDYwn9LVqru2WjpG99JXxEcSP+vY= -----END RSA PRIVATE KEY-----";$str = "這個(gè)是要加密的字符4567串888";//這個(gè)例子是演示RSA加密 //非對(duì)稱加密 分為 公鑰和私鑰 //通常 公鑰加密 私鑰解密,私鑰加密,公鑰解密/** 用到的加密函數(shù) openssl_private_decrypt — Decrypts data with private key openssl_private_encrypt — Encrypts data with private key openssl_public_decrypt — Decrypts data with public key openssl_public_encrypt — Encrypts data with public key**///echo $private_key; $pi_key = openssl_pkey_get_private($pri_key);//這個(gè)函數(shù)可用來判斷私鑰是否是可用的,可用返回資源id Resource id $pu_key = openssl_pkey_get_public($pub_key);//這個(gè)函數(shù)可用來判斷公鑰是否是可用的 //print_r($pi_key);echo "\n"; //print_r($pu_key);echo "\n";//公鑰加密過程 $enStr = ''; openssl_public_encrypt($str,$enStr,$pu_key); //加密后的字符 有些無法顯示 需要 base64_encode ( string $data ) ,解密的時(shí)候不需要要 base64_decode ( string $data ) echo base64_encode ($enStr); echo "<br/>";//私鑰解密過程 $deStr = ''; //$enStr = base64_decode ( $enStr); openssl_private_decrypt($enStr,$deStr,$pi_key); echo $deStr; echo "<br/>";//下面是簽名驗(yàn)證例子,驗(yàn)證簽名 一定是用公鑰去驗(yàn)證 對(duì)方私鑰加密的結(jié)果 $binary_signature = ""; // At least with PHP 5.2.2 / OpenSSL 0.9.8b (Fedora 7) // there seems to be no need to call openssl_get_privatekey or similar. // Just pass the key as defined above openssl_sign($str, $binary_signature, $pi_key, OPENSSL_ALGO_SHA1);// Check signature $ok = openssl_verify($str, $binary_signature, $pu_key, OPENSSL_ALGO_SHA1);echo "check #1: "; if ($ok == 1) {echo "signature ok (as it should be)\n"; } elseif ($ok == 0) {echo "bad (there's something wrong)\n"; } else {echo "ugly, error checking signature\n"; }//var_dump(openssl_get_cipher_methods() );

?

?

生成秘鑰:http://php.net/manual/en/function.openssl-private-encrypt.php

$res = openssl_pkey_new();// Get private key openssl_pkey_export($res, $privkey);// Get public key $pubkey = openssl_pkey_get_details($res); $pubkey = $pubkey["key"]; var_dump($privkey); var_dump($pubkey);

?

?

?

?

參考:

http://stephen830.iteye.com/blog/2087281

https://www.cnblogs.com/jaryoung/p/7644481.html

?

總結(jié)

以上是生活随笔為你收集整理的linux下OpenSSL的RSA密钥生成的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。