RSA+AES加密

前言


對(duì)稱加密算法(不可逆的征冷,傳統(tǒng)加密算法)Hash加密算法/散列算法

?- DES? ? (數(shù)據(jù)加密標(biāo)準(zhǔn)(用的少,因?yàn)閺?qiáng)度不夠)

?- 3DES? ? (使用3個(gè)密鑰,對(duì)相同的數(shù)據(jù)執(zhí)行三次加密,強(qiáng)度增強(qiáng)!

?- AES(高級(jí)密碼標(biāo)準(zhǔn),美國(guó)國(guó)家安全局使用的,iOS系統(tǒng)使用的加密方式(鑰匙串))

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


?ECB:電子代碼本,就是每一個(gè)塊都進(jìn)行一次獨(dú)立的加密滞项,將一個(gè)大的數(shù)據(jù)塊,拆分成若干個(gè)小塊,一次加密。

?CBC加密可以有保證數(shù)據(jù)完整性,使用一個(gè)密鑰和一個(gè)初始化向量(IV)對(duì)數(shù)據(jù)執(zhí)行加密,每一塊數(shù)據(jù)都依賴上一塊數(shù)據(jù)進(jìn)行加密

?非對(duì)稱加密算法 (可逆的,現(xiàn)代加密算法)

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

?-公鑰加密 私鑰解密

?-私鑰加密 公鑰解密


使用RSA加密,需要生成RSA私鑰和公鑰匙早抠。iOS 開(kāi)發(fā) 最終需要.der 和P12

以為為終端命令行

?// 1.生成私鑰

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

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

// 2.創(chuàng)建證書(shū)請(qǐng)求

//iOS 開(kāi)發(fā)中,不能直接使用pem格式證書(shū)(終端生成默認(rèn).pem格式)

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

// 3.生成證書(shū)并簽名

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

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

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

// 5.生成P12文件(或者雙擊der撬讽,導(dǎo)出P12)

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

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


操作如下:


生成如下證書(shū)


代碼事例


#import "ViewController.h"

#import "RSACryptor.h"

#import "EncryptionTools.h"

@interface ViewController ()

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

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

@end

@implementation ViewController

- (void)viewDidLoad {

? ? [super viewDidLoad];

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

? ?//1.加載公鑰

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

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

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

? ? //模擬服務(wù)端加密key

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

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

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

? ? [btnsetTitle:@"加密數(shù)據(jù)" 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};//直接影響加密結(jié)果!

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


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

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

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

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

? ? NSLog(@"解密后的數(shù)據(jù)==%@",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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蕊连,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锐秦,更是在濱河造成了極大的恐慌咪奖,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酱床,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡趟佃,警方通過(guò)查閱死者的電腦和手機(jī)扇谣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)闲昭,“玉大人罐寨,你說(shuō)我怎么就攤上這事⌒蚓兀” “怎么了鸯绿?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,630評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)簸淀。 經(jīng)常有香客問(wèn)我瓶蝴,道長(zhǎng),這世上最難降的妖魔是什么租幕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,906評(píng)論 1 295
  • 正文 為了忘掉前任舷手,我火速辦了婚禮,結(jié)果婚禮上劲绪,老公的妹妹穿的比我還像新娘男窟。我一直安慰自己,他們只是感情好贾富,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布歉眷。 她就那樣靜靜地躺著,像睡著了一般颤枪。 火紅的嫁衣襯著肌膚如雪汗捡。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,718評(píng)論 1 305
  • 那天汇鞭,我揣著相機(jī)與錄音凉唐,去河邊找鬼庸追。 笑死,一個(gè)胖子當(dāng)著我的面吹牛台囱,可吹牛的內(nèi)容都是我干的淡溯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,442評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼簿训,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咱娶!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起强品,我...
    開(kāi)封第一講書(shū)人閱讀 39,345評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤膘侮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后的榛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體琼了,經(jīng)...
    沈念sama閱讀 45,802評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評(píng)論 3 337
  • 正文 我和宋清朗相戀三年夫晌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雕薪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,117評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晓淀,死狀恐怖所袁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凶掰,我是刑警寧澤燥爷,帶...
    沈念sama閱讀 35,810評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站懦窘,受9級(jí)特大地震影響前翎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奶赠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評(píng)論 3 331
  • 文/蒙蒙 一鱼填、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧毅戈,春花似錦苹丸、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,011評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至扇单,卻和暖如春商模,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,139評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工施流, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留响疚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評(píng)論 3 373
  • 正文 我出身青樓瞪醋,卻偏偏與公主長(zhǎng)得像忿晕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子银受,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 之前一直對(duì)加密這塊了解的不多宾巍,新入公司接手代碼的時(shí)候發(fā)現(xiàn)項(xiàng)目中對(duì)加密做的很復(fù)雜咕幻,發(fā)現(xiàn)當(dāng)中用到了RSA、AES顶霞、安全...
    Midsum閱讀 841評(píng)論 0 5
  • 最近項(xiàng)目涉及到傳輸加密肄程,對(duì)于現(xiàn)在比較安全和流行的加密技術(shù)做一個(gè)記錄和分享。 Demo地址 RSA對(duì)稱加密 所謂對(duì)稱...
    mocen_王琪閱讀 2,342評(píng)論 0 3
  • 這邊的獄卒也是戴著鐵面具,體型高大诸典、威武描函,手持皮鞭。? 獄卒做的是把男女挑選出來(lái)狐粱,并且分開(kāi)舀寓。 “...
    暢想之心閱讀 712評(píng)論 1 3
  • 趁著端午假期互墓,跑去海南玩了一趟,去完三亞返回航眩口的路上篡撵,想著給同事帶點(diǎn)芒果回去,于是就留意著路邊的水果攤豆挽,中途在路...
    一西爾閱讀 344評(píng)論 0 0
  • 之前寫(xiě)過(guò)這個(gè)主題的文章帮哈,講的是聽(tīng)過(guò)的道理不成系統(tǒng)雜亂無(wú)章膛檀,無(wú)法幫助深入的理解,感覺(jué)寫(xiě)的不好,略片面咖刃。今天有了不一樣...
    貓良貓良閱讀 206評(píng)論 0 0