RSA+AES加密

前言


對稱加密算法(不可逆的,傳統加密算法)Hash加密算法/散列算法

?- DES? ? (數據加密標準(用的少,因為強度不夠)

?- 3DES? ? (使用3個密鑰,對相同的數據執行三次加密,強度增強!

?- AES(高級密碼標準,美國國家安全局使用的,iOS系統使用的加密方式(鑰匙串))

?AES加密方式分為ECB和CBC兩種加密方式:


?ECB:電子代碼本,就是每一個塊都進行一次獨立的加密,將一個大的數據塊,拆分成若干個小塊,一次加密。

?CBC加密可以有保證數據完整性,使用一個密鑰和一個初始化向量(IV)對數據執行加密,每一塊數據都依賴上一塊數據進行加密

?非對稱加密算法 (可逆的,現代加密算法)

?-RSA 加密算法? (算法是公開的)

?-公鑰加密 私鑰解密

?-私鑰加密 公鑰解密


使用RSA加密,需要生成RSA私鑰和公鑰匙。iOS 開發 最終需要.der 和P12

以為為終端命令行

?// 1.生成私鑰

?openssl? genrsa -out TeeMo.pem 512 終端生成私鑰命令 512加密方式? (生成TeeMo.pem 私鑰)

?openssl rsa -in TeeMo.pem -out gongyao.pem -pubout 終端生成公鑰命令? (生成gongyao.pem 公鑰)

// 2.創建證書請求

//iOS 開發中,不能直接使用pem格式證書(終端生成默認.pem格式)

?openssl req -new -key TeeMo.Pem -out reqTeeMo.csr (生成過程需要寫國家 省份公司的等等 密碼) 我寫了密碼:123456

// 3.生成證書并簽名

openssl x509 -req -days 3650 -in reqTeeMo.csr -signkey TeeMo.pem -out reqTeeMo.crt(簽名后的證書reqTeeMo.crt)

// 4.生成.der證書 ?獲得最終需要的.der文件(reqTeeMo.der 包含一公鑰和一些信息)

openssl x509 -outform der -in reqTeeMo.crt -out reqTeeMo.der

// 5.生成P12文件(或者雙擊der,導出P12)

?openssl pkcs12 -export -out TeeMo.p12 -inkey TeeMo.pem -in reqTeeMo.crt

需要輸入密碼(我寫了:234567)


操作如下:


生成如下證書


代碼事例


#import "ViewController.h"

#import "RSACryptor.h"

#import "EncryptionTools.h"

@interface ViewController ()

@property (nonatomic,strong)NSData *mEncryptionData;//模擬服務端加密的Key

@property (nonatomic,strong)NSString *mGetKey;//模擬服務端加密的Key

@end

@implementation ViewController

- (void)viewDidLoad {

? ? [super viewDidLoad];

? ? NSString*key =@"ThisIsKey";//服務端未加密的key

? ?//1.加載公鑰

? ? [[RSACryptor sharedRSACryptor] loadPublicKey:[[NSBundle mainBundle] pathForResource:@"reqTeeMo.der" ofType:nil]];

? ? //2. 加載私鑰 - P12的文件? password : 生成P12 的時候設置的密碼

? ? [[RSACryptor sharedRSACryptor] loadPrivateKey:[[NSBundle mainBundle] pathForResource:@"TeeMo.p12" ofType:nil] password:@"234567"];

? ? //模擬服務端加密key

? ? _mEncryptionData = [[RSACryptor sharedRSACryptor] encryptData:[key dataUsingEncoding:NSUTF8StringEncoding]];

? ? NSLog(@"模擬服務端加密的key=====%@",_mEncryptionData);

? ? UIButton *btn = [UIButton buttonWithType:(UIButtonTypeCustom)];

? ? [btnsetTitle:@"加密數據" forState:(UIControlStateNormal)];

? ? btn.backgroundColor = [UIColor grayColor];

? ? btn.frame=CGRectMake(100,300,150,80);

? ? [self.view addSubview:btn];

? ? [btnaddTarget:self action:@selector(btnClick:) forControlEvents:(UIControlEventTouchUpInside)];


? ? UIButton *btn_key = [UIButton buttonWithType:(UIButtonTypeCustom)];

? ? [btn_keysetTitle:@"解密拿到Key" forState:(UIControlStateNormal)];

? ? btn_key.frame=CGRectMake(100,100,150,80);

? ? btn_key.backgroundColor = [UIColor grayColor];

? ? [self.viewaddSubview:btn_key];

? ? [btn_keyaddTarget:self action:@selector(getKey:) forControlEvents:(UIControlEventTouchUpInside)];

}

- (void)btnClick:(UIButton*)btn{

?? ? //AES - CBC 加密? 下面iv傳ivData

? ? uint8_tiv[8] = {2,3,4,5,6,7,0,0};//直接影響加密結果!

? ? NSData * ivData = [NSData dataWithBytes:iv length:sizeof(iv)];


? ? //AES - ECB 加密? iv傳nil即可

? ? NSString * encr_str = [[EncryptionTools sharedEncryptionTools] encryptString:@"這里要加密的數據" keyString:_mGetKey iv:nil];

? ? NSLog(@"加密后的數據====%@",encr_str);

? ? NSString * decy_str =[[EncryptionTools sharedEncryptionTools] decryptString:encr_str keyString:_mGetKey iv:nil];

? ? NSLog(@"解密后的數據==%@",decy_str);

}

- (void)getKey:(UIButton*)btn{

? ? //解密

? ? NSData * jiemi = [[RSACryptor sharedRSACryptor] decryptData:_mEncryptionData];

? ? //這里輸出拿到了ThisIsKey

? ? _mGetKey = [[NSString alloc]initWithData:jiemi encoding:NSUTF8StringEncoding];

? ? NSLog(@"%@",_mGetKey);

}

@end


Demo 傳送門https://github.com/TeeMoYan/RSADemo.git

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,802評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,762評論 2 372

推薦閱讀更多精彩內容