RSA算法

密碼學發(fā)展暫不陳述。

加密方式比較特殊,需要兩個密鑰:公開密鑰簡稱公鑰(publickey)和私有密鑰簡稱私鑰(privatekey)。公鑰加密,私鑰解密;私鑰加密,公鑰解密。這個加密算法就是RSA。

  • 歐拉函數

一、當n是質數的時候,φ(n)=n-1。
二、如果n可以分解成兩個互質的整數之積,如n=AB則:
φ(A
B)=φ(A)* φ(B)
根據以上兩點得到:
如果N是兩個質數P1 和 P2的乘積則
φ(N)=φ(P1)* φ(P2)=(P1-1)*(P2-1)
舉例1:
計算8的歐拉函數,和8互質的 1、2、3、4、5、6、7、8
φ(8) = 4
計算7的歐拉函數,和7互質的 1、2、3、4、5、6、7
φ(7) = 6
計算56的歐拉函數
φ(56) = φ(8) * φ(7) = 4 * 6 = 24

  • 互質
    除了1以外,沒有其他公因數,我們就稱這兩個數是互質關系
  • 定理
    1.如果兩個正整數m和n互質,那么m的φ(n)次方減去1,可以被n整除。
    2.歐拉定理的特殊情況:如果兩個正整數m和n互質,而且n為質數!那么φ(n)結果就是n-1。
    詳細演變過程及說明
//生成一個1024個二進制位的私鑰
openssl genrsa -out private.pem 1024
或者 2048
openssl genrsa -out privatekey.pem -des3 2048 //生成私鑰,帶密碼
openssl genrsa -out privatekey.pem 2048 //生成私鑰,不帶密碼



//根據私鑰導出公鑰
openssl rsa -in private.pem -pubout -out public.pem

查看文件

cat private.pem
cat public.pem
//以上口令可以查看 base64編碼 (原本是二進制數據)
//將私鑰轉換成為明文查看詳細信息
openssl rsa -in private.pem -text -out private.txt 

加解密

// 首先新建文件
vim message.txt 
:wq 

1.公鑰加密私鑰解密
//加密
openssl rsautl -encrypt -in message.txt -inkey public.pem -pubin -out enc.txt
或者
openssl rsautl -encrypt -inkey public.pem -pubin -in message.txt -out enc.txt

//解密
openssl rsautl -decrypt -in enc.txt -inkey private.pem -out dec.txt
或者
openssl rsautl -decrypt -inkey private.pem -in enc.txt -out dec.txt

2.私鑰加密公鑰解密
openssl rsautl -sign -inkey private.pem -in 1.txt -out 2.txt //私鑰加密
openssl rsautl -verify -pubin -inkey public.pem -in 2.txt -out 3.txt //公鑰解密

  • 證書
//1保證所在文件夾下面 有對應的私鑰 不然會找不到報錯。細節(jié)問題。-->私鑰
client.key:私鑰證書
openssl genrsa -out client.key 2048

// 2生成簽名請求(csr文件) client.key 就是證書私鑰。 --> 根據私鑰生成請求文件
client.key:私鑰證書
openssl req -new -key client.key -out client.csr
-----
Country Name (2 letter code) []:CN
State or Province Name (full name) []:BJ
Locality Name (eg, city) []:Mr
Organization Name (eg, company) []:SF
Organizational Unit Name (eg, section) []:depart
Common Name (eg, fully qualified host name) []:SF
Email Address []:666@qq.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:6666

//3 簽發(fā)證書--> 根據 請求文件 簽發(fā)證書
client.key:私鑰證書
client.csr:請求文件
openssl x509 -req -days 365 -in client.csr -signkey client.key -out client.crt

//4 p12
openssl pkcs12 -export -out p.p12 -inkey client.key -in client.crt
這個需要密碼

我們拿到 蘋果證書后,查看鑰匙串證書。會看到 證書下面有關聯(lián)文件,p12

以上生成的 文件 p12 與 crt 就是 私鑰 與 公鑰 進行 加密解密

一鍵生成自簽名證書

openssl req -new -x509 -newkey rsa:4096 -keyout test.key -out test.crt

RSA

  • 歐拉定理
  • RSA公式推導 加密解密原理 需要清楚。
  • 特點

總結證書方面

- 拿到私鑰 OpenSSL ... 由私鑰可以導出公鑰
 openssl genrsa -out ca.key 1024
- 根據私鑰 導出 CSR 請求文件
openssl req -new -key ca.key -out rsacert.csr
- 根據 CSR 請求文件 獲取crt證書,https協(xié)議就需要 .crt 證書
openssl x509 -req -days 3650 -in rsacert.csr -signkey ca.key -out rsacert.crt
- 根據 crt證書 導出 p12文件 這一步需要密碼 設置下就好
openssl pkcs12 -export -out p.p12 -inkey ca.key -in rsacert.crt
對于Xcode 本身而言 同樣會生成 請求文件 向蘋果服務器獲取證書文件。
Mac 不支持 直接使用 pem、crt 文件。需要進行格式轉換
openssl x509 -outform der -in rsacert.crt -out rsacert.der

由以上命令 可以得到 
der(公鑰)   p12(私鑰)  文件

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容