亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

小餅-帶你爬那些年爬過的RSA坑iOSRAS加密以及與.NET之間的通信問題

2019-11-14 19:38:54
字體:
來源:轉載
供稿:網友

背景

首先最近我們在做一個APP 但是我們數據交互都是明文的=- = 這咋辦勒,傻子也知道加密一下咯。可是加密也有問題 對稱加密的話,人家破解你的應用就能知道了。所以用到了非對稱加密并且每個APP生成不同的RSA密鑰對。

初步實現

實現再iOS上面實現RSA加密并不難,因為iOS中有openssl 和 系統自帶的 security.framework。我這里選擇了openSSL 因為我比較懶 =- = 發現別人已經寫好了 直接就用了唄。security.framework其實也不錯的,就是我還不知道咋用。

初試OpenSSL RSA

Demo地址
這個是GitHub上面一個人寫好的,實現了OpenSSL 的RSA加密

問題

1.在iOS上 使用OpenSSL 生成的公鑰私鑰編碼是X509的,而我們服務器使用的是.NET的(.NET的編碼是PKCS#8) PS:(←。 ←)我也不知道對不對,這幾天百度的結果是醬紫的,
.NET與java(android)RSA通信 可以參考這個地址,我個人總結的是,JAVA支持集中不同的編碼格式,所以JAVA通信問題不大
2.如何轉換不同的證書

過程

1.先找了如何讓兩個生成的密文一樣,但是發現有paddingPKCS1這種東西肯定不行(宣告失?。?br />2.想辦法生成一個PKCS#8的密鑰對(我試了一些openssl的命令行,可是最終密鑰對要app生成的,所以沒繼續,也宣告失敗了)
3..NET服務端使用openssl解決該問題(可是如果這樣的話 ,android又需要修改,所以宣布放棄了)
4.轉換密鑰對編碼(其實其中我還找了 iOS與Java通信之類的,這里我就不一一闡述了)

這個彎路其實挺長的,我總結了一下是這么幾點,但是歷史一天時間了。。。

主要我就來講一下最后一點吧??隙〞信笥褑栁沂沁@么發現這兩個密鑰對的區別的。
不要著急,我們廣告之后繼續。

解決問題

首先我建議各位下載一下那個github里面的代碼,這樣容易理解。
當你運行完一次程序,你會發現你的iphone模擬器目錄下面會有 publicKey.pem 和 PRivateKey.pem
我們需要把publicKey交給服務端,這樣他加密的東西,只有我這個privateKey可以解,這些原理我就不多做說明了。

然后我們打開publicKey會是一下

     /*     This return value based on the key that generated by openssl.     -----BEGIN RSA PUBLIC KEY-----     MIGHAoGBAOp5TLclpWCaNDzHYPfB26SLmS8vlSXH4PyKopz5OS5Vx994FBQQLwv9     2pIJQsBk09egrL0gbASK1VCwDt0MmaiyrNFl/xaEzB/VOvjoojBUzMMIca9fKmx5     GAzSbSP7we64dhvrziuuNVTuM/e2XSa2skKFHMI0bCq4+pNYhvRhAgED     -----END RSA PUBLIC KEY-----     */

然后我們看一下源代碼

- (NSString*)publicKeyBase64{  NSFileManager *fm = [NSFileManager defaultManager];  if ([fm fileExistsAtPath:OpenSSLRSAPublicKeyFile])   {      NSString *str = [NSString stringWithContentsOfFile:OpenSSLRSAPublicKeyFile encoding:NSUTF8StringEncoding error:nil];      NSData *data = [self publicKeyBitsWithString:[[str componentsSeparatedByString:@"-----"] objectAtIndex:2]];      return [data base64EncodedString];  }  return nil;}

 

這里我們看到OpenSSL將整個證書文件Base64了一下,沒錯,這里確實沒錯。

我起初再這里還繞彎了 我以為是key錯誤了。其實OpenSSL 正確的publicKey轉NSData后 大小一定是162,如果你只是其中那一段(沒有----****----這兩行的話)就是140了。
我同事在查看OpenSSL.NET的源代碼的時候發現了一段轉換過程,然后我看了一下.NET端的代碼,代碼如下{S%R{BN0[]IQ57FQDJ%{D~J.jpg
看得懂.net的或者看不懂.NET的應該都可以看的懂很簡單的代碼。

so 我饒了這么大的彎子,你們應該一看就知道了接下來就是處理了,這么讓publicKey變成128-》PKCS#8標準的編碼呢,按照.NET的OpenSSL代碼翻譯下一下

if((unsigned long)[NSData dataWithBase64EncodedString:wrapper.publicKeyBase64].length<162){    NSLog(@"公鑰格式不正確!");    return;}else{    //取出.NET可以使用的 PubKey    NSData *keyData=[NSData dataWithBase64EncodedString:wrapper.publicKeyBase64];    NSData * newKeyData =[keyData subdataWithRange:NSMakeRange(29, 128)];    NSLog(@"NewPubKey:%@",[newKeyData base64EncodedString]);}

 

小結

上面這個就是我的處理過程 =- = 這次的這個RSA的坑是真坑啊,我要是沒看服務端代碼 肯定搞不出來,因為本地加解密都是OK的,唉,所以這件事情告訴我們,看問題必須得從多個方面看,而且不能只是看自己手頭上的可以從多個方面入手尋找資料。不過這次也是因為我會.NET所以我會想到去看一下。
這個坑記錄一下 希望可以幫到大家
這個是前一段時間坑過的一個東西,發現網上都找不到資料 古留下這篇文章...

我也坑過AES 可以看我的個人博客,當然我也會更新到這里來~

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久久久久久久久久久久久av| 成人444kkkk在线观看| 国产综合香蕉五月婷在线| 欧美又大粗又爽又黄大片视频| 欧美在线视频观看免费网站| 97国产在线观看| 久久精品中文字幕电影| 清纯唯美亚洲综合| 一本色道久久综合狠狠躁篇怎么玩| 久久精品视频免费播放| 国产精品久久久久国产a级| 日韩精品亚洲精品| 人人爽久久涩噜噜噜网站| 热久久美女精品天天吊色| 国语自产精品视频在线看抢先版图片| 亚洲第一网站男人都懂| 亚洲精品99久久久久中文字幕| 亚洲丝袜在线视频| 成人免费高清完整版在线观看| 久热精品视频在线观看| 97av在线视频免费播放| 国产欧美精品va在线观看| 国产精品综合网站| 日韩av网站电影| 91欧美精品成人综合在线观看| 亚洲欧洲在线看| 欧美精品激情在线观看| 亚洲经典中文字幕| 91精品国产综合久久香蕉922| 亚洲免费中文字幕| 精品视频一区在线视频| 国产一区二区三区三区在线观看| 91精品在线影院| 亚洲成人精品久久久| 一本久久综合亚洲鲁鲁| 欧美激情在线有限公司| 91免费人成网站在线观看18| 日本视频久久久| 欧美性xxxx极品高清hd直播| 国产丝袜一区二区| 久久69精品久久久久久国产越南| 日韩精品免费在线视频观看| 亚洲成人av片在线观看| 91精品在线国产| 亚洲国产欧美一区二区三区久久| 91久久久久久久久久久久久| 国产成人在线播放| 96国产粉嫩美女| 九九九热精品免费视频观看网站| 欧美电影在线观看完整版| 91精品综合视频| 波霸ol色综合久久| 久久久久久国产精品| 国产精品丝袜一区二区三区| 日韩av在线影院| 91精品国产91| 久久久亚洲精品视频| 亚洲天堂视频在线观看| 亚洲欧美另类在线观看| 国产亚洲欧美一区| 精品中文字幕在线| 亚洲成人a**站| 欧美性生活大片免费观看网址| 亚洲国产美女精品久久久久∴| 美女黄色丝袜一区| 国内外成人免费激情在线视频网站| 在线一区二区日韩| 精品视频偷偷看在线观看| 欧美第一黄网免费网站| 国产美女扒开尿口久久久| 国产91精品视频在线观看| 日韩成人激情视频| 国产99在线|中文| 国产91在线播放精品91| 久久亚洲精品一区| 国产精品久久久久久久久久东京| 97国产成人精品视频| 亚洲欧美激情另类校园| 日韩成人av一区| 在线观看国产精品91| 亚洲色图色老头| 欧美精品videos| 国产精品吹潮在线观看| 97婷婷涩涩精品一区| 国产欧美精品日韩精品| 国模精品一区二区三区色天香| 精品国产一区二区在线| 68精品久久久久久欧美| 一区二区三区视频在线| 欧美一区二区大胆人体摄影专业网站| 日韩av资源在线播放| 国产精品极品美女粉嫩高清在线| 国产精品免费久久久久久| 国产69精品久久久久99| 国模极品一区二区三区| 亚洲国产精品99| 日韩电影大片中文字幕| 热久久美女精品天天吊色| 日韩精品极品在线观看播放免费视频| 97人人爽人人喊人人模波多| 久久久噜噜噜久久久| 精品久久久久久中文字幕一区奶水| 国产精品一区二区久久久久| 中文字幕在线精品| 日韩欧中文字幕| 91中文在线观看| 亚洲区在线播放| 国产欧美日韩高清| 福利一区视频在线观看| 96精品视频在线| 亚洲日韩中文字幕| 亚洲一区二区在线| 久久精品久久久久久国产 免费| 这里只有精品在线观看| 国产精品扒开腿做爽爽爽的视频| 精品视频www| 日韩欧美在线一区| 亚洲国产私拍精品国模在线观看| 中文国产成人精品| 少妇高潮久久久久久潘金莲| 草民午夜欧美限制a级福利片| 欧美人与性动交a欧美精品| 97视频网站入口| 日韩在线视频免费观看| 夜夜嗨av色综合久久久综合网| 性视频1819p久久| 亚洲国产精彩中文乱码av在线播放| 日韩中文字幕免费视频| 国产精品久久99久久| 亚洲精品电影在线观看| 91精品国产91久久久久久| 久久福利网址导航| 亚洲区一区二区| 欧美日本精品在线| 96pao国产成视频永久免费| 色综合伊人色综合网| 中文字幕日韩在线观看| 亚洲欧美一区二区精品久久久| 欧美性xxxx极品高清hd直播| …久久精品99久久香蕉国产| 亚洲国产天堂久久综合网| 欧美裸体男粗大视频在线观看| 欧美成人午夜激情在线| 色噜噜久久综合伊人一本| 亚洲欧美日韩网| www.国产精品一二区| 国产精品69精品一区二区三区| 久久人人爽亚洲精品天堂| 成人免费自拍视频| 97成人精品视频在线观看| 国产精品第一视频| 日韩免费在线观看视频| 国产精品视频在线播放| 日本a级片电影一区二区| 久久久91精品| 亚洲中国色老太| 最近2019中文字幕第三页视频| 91色精品视频在线| 亚洲一区二区三区香蕉| 亚洲欧美日韩天堂一区二区| 亚洲一区二区三区777| 日韩av一区二区在线| 国产一区二区三区视频在线观看| 91精品免费久久久久久久久|