密碼學(xué)發(fā)展暫不陳述奖地。
加密方式比較特殊,需要兩個(gè)密鑰:公開密鑰簡稱公鑰(publickey)和私有密鑰簡稱私鑰(privatekey)仁热。公鑰加密,私鑰解密勾哩;私鑰加密抗蠢,公鑰解密举哟。這個(gè)加密算法就是RSA。
- 歐拉函數(shù)
一迅矛、當(dāng)n是質(zhì)數(shù)的時(shí)候妨猩,φ(n)=n-1。
二诬乞、如果n可以分解成兩個(gè)互質(zhì)的整數(shù)之積册赛,如n=AB則:
φ(AB)=φ(A)* φ(B)
根據(jù)以上兩點(diǎn)得到:
如果N是兩個(gè)質(zhì)數(shù)P1 和 P2的乘積則
φ(N)=φ(P1)* φ(P2)=(P1-1)*(P2-1)
舉例1:
計(jì)算8的歐拉函數(shù),和8互質(zhì)的 1震嫉、2森瘪、3、4票堵、5扼睬、6、7悴势、8
φ(8) = 4
計(jì)算7的歐拉函數(shù)窗宇,和7互質(zhì)的 1、2特纤、3军俊、4、5捧存、6粪躬、7
φ(7) = 6
計(jì)算56的歐拉函數(shù)
φ(56) = φ(8) * φ(7) = 4 * 6 = 24
- 互質(zhì)
除了1以外,沒有其他公因數(shù)昔穴,我們就稱這兩個(gè)數(shù)是互質(zhì)關(guān)系 - 定理
1.如果兩個(gè)正整數(shù)m和n互質(zhì)镰官,那么m的φ(n)次方減去1,可以被n整除吗货。
2.歐拉定理的特殊情況:如果兩個(gè)正整數(shù)m和n互質(zhì)泳唠,而且n為質(zhì)數(shù)!那么φ(n)結(jié)果就是n-1宙搬。
詳細(xì)演變過程及說明
//生成一個(gè)1024個(gè)二進(jìn)制位的私鑰
openssl genrsa -out private.pem 1024
或者 2048
openssl genrsa -out privatekey.pem -des3 2048 //生成私鑰笨腥,帶密碼
openssl genrsa -out privatekey.pem 2048 //生成私鑰,不帶密碼
//根據(jù)私鑰導(dǎo)出公鑰
openssl rsa -in private.pem -pubout -out public.pem
查看文件
cat private.pem
cat public.pem
//以上口令可以查看 base64編碼 (原本是二進(jìn)制數(shù)據(jù))
//將私鑰轉(zhuǎn)換成為明文查看詳細(xì)信息
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保證所在文件夾下面 有對應(yīng)的私鑰 不然會找不到報(bào)錯(cuò)勇垛。細(xì)節(jié)問題脖母。-->私鑰
client.key:私鑰證書
openssl genrsa -out client.key 2048
// 2生成簽名請求(csr文件) client.key 就是證書私鑰。 --> 根據(jù)私鑰生成請求文件
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ā)證書--> 根據(jù) 請求文件 簽發(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
這個(gè)需要密碼
我們拿到 蘋果證書后窥摄,查看鑰匙串證書镶奉。會看到 證書下面有關(guān)聯(lián)文件,p12
以上生成的 文件 p12 與 crt 就是 私鑰 與 公鑰 進(jìn)行 加密解密
一鍵生成自簽名證書
openssl req -new -x509 -newkey rsa:4096 -keyout test.key -out test.crt
RSA
- 歐拉定理
- RSA公式推導(dǎo) 加密解密原理 需要清楚。
- 特點(diǎn)
總結(jié)證書方面
- 拿到私鑰 OpenSSL ... 由私鑰可以導(dǎo)出公鑰
openssl genrsa -out ca.key 1024
- 根據(jù)私鑰 導(dǎo)出 CSR 請求文件
openssl req -new -key ca.key -out rsacert.csr
- 根據(jù) CSR 請求文件 獲取crt證書哨苛,https協(xié)議就需要 .crt 證書
openssl x509 -req -days 3650 -in rsacert.csr -signkey ca.key -out rsacert.crt
- 根據(jù) crt證書 導(dǎo)出 p12文件 這一步需要密碼 設(shè)置下就好
openssl pkcs12 -export -out p.p12 -inkey ca.key -in rsacert.crt
對于Xcode 本身而言 同樣會生成 請求文件 向蘋果服務(wù)器獲取證書文件鸽凶。
Mac 不支持 直接使用 pem、crt 文件建峭。需要進(jìn)行格式轉(zhuǎn)換
openssl x509 -outform der -in rsacert.crt -out rsacert.der
由以上命令 可以得到
der(公鑰) p12(私鑰) 文件