基礎知識
什么是RSA
答:RSA是一種非對稱加密算法吆鹤,常用來對傳輸數(shù)據(jù)進行加密,配合上數(shù)字摘要算法好啰,也可以進行文字簽名忍些。RSA加密中padding?
答:padding即填充方式坎怪,由于RSA加密算法中要加密的明文是要比模數(shù)小的,padding就是通過一些填充方式來限制明文的長度廓握。后面會詳細介紹padding的幾種模式以及分段加密搅窿。加密和加簽有什么區(qū)別?
答:
加密:公鑰放在客戶端隙券,并使用公鑰對數(shù)據(jù)進行加密男应,服務端拿到數(shù)據(jù)后用私鑰進行解密;
加簽:私鑰放在客戶端娱仔,并使用私鑰對數(shù)據(jù)進行加簽沐飘,服務端拿到數(shù)據(jù)后用公鑰進行驗簽。前者完全為了加密牲迫;后者主要是為了防惡意攻擊耐朴,防止別人模擬我們的客戶端對我們的服務器進行攻擊,導致服務器癱瘓盹憎。
基本原理
RSA使用“密鑰對”對數(shù)據(jù)進行加密解密筛峭,在加密解密前需要先生存公鑰(Public Key)和私鑰(Private Key)。
公鑰(Public key): 用于加密數(shù)據(jù). 用于公開, 一般存放在數(shù)據(jù)提供方, 例如iOS客戶端陪每。
私鑰(Private key): 用于解密數(shù)據(jù). 必須保密, 私鑰泄露會造成安全問題影晓。iOS中的Security.framework提供了對RSA算法的支持镰吵,這種方式需要對密匙對進行處理, 根據(jù)public key生成證書, 通過private key生成p12格式的密匙。想想jave直接用字符串進行加密解密簡單多了挂签。(⊙o⊙)…
實戰(zhàn)
證書生成
RSA加密這塊公鑰疤祭、私鑰必不可少的。Apple是不支持直接使用字符串進行加密解密的饵婆,推薦使用p12文件勺馆。這邊教大家去生成在加密中使用到的所有文件,并提供給Java使用啦辐,想當年這個公鑰私鑰搞了半天了谓传。 %>_<%
- 生成模長為1024bit的私鑰
openssl genrsa -out private_key.pem 1024
- 生成certification require file
openssl req -new -key private_key.pem -out rsaCertReq.csr
- 生成certification 并指定過期時間
openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt
- 生成公鑰供iOS使用
openssl x509 -outform der -in rsaCert.crt -out public_key.der
- 生成私鑰供iOS使用 這邊會讓你輸入密碼,后期用到在生成secKeyRef的時候會用到這個密碼
openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt
- 生成pem結尾的公鑰供Java使用
openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout
- 生成pem結尾的私鑰供Java使用
openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt
以上所有的步驟都是在終端下完成的哦 (__)
|
|
微云網(wǎng)盤
RSA簡單使用