iOS 關(guān)于加密

常見的iOS代碼加密常用加密方式包括Base64加密荤西、MD5加密、AES加密戏蔑、RSA加密等糜芳。

Base64加密

Base64加密特點(diǎn):

- 數(shù)據(jù)加密之后,數(shù)據(jù)量會變大妖枚,變大1/3左右廷臼。

- 可進(jìn)行反向解密。

- 編碼后有個(gè)非常顯著的特點(diǎn),末尾有個(gè)=號荠商。

加密過程:

+ (NSString*)base64EncodedStringWithData:(NSData*)data{

//判斷是否傳入需要加密數(shù)據(jù)參數(shù)

if((data ==nil) || (data ==NULL)) {

return nil; }

else if (![data isKindOfClass:[NSDataclass]]) {

return nil; ?}?

//判斷設(shè)備系統(tǒng)是否滿足條件

if([[[UIDevicecurrentDevice] systemVersion] doubleValue] <=6.9) {

return nil; }

//使用系統(tǒng)的API進(jìn)行Base64加密操作

NSDataBase64EncodingOptionsoptions;?

?options =NSDataBase64EncodingEndLineWithLineFeed;

return [data base64EncodedStringWithOptions:options];

}

解密過程:

+ (NSData*)base64DecodeDataWithString:(NSString*)string{

//判斷是否傳入需要加密數(shù)據(jù)參數(shù)

if((string ==nil) || (string ==NULL)) {

return nil; }

elseif(![string isKindOfClass:[NSStringclass]]) {

return nil; }

//判斷設(shè)備系統(tǒng)是否滿足條件

if([[[UIDevicecurrentDevice] systemVersion] doubleValue] <=6.9) {

return nil; }

//使用系統(tǒng)的API進(jìn)行Base64解密操作

NSDataBase64DecodingOptionsoptions;?

?options =NSDataBase64DecodingIgnoreUnknownCharacters;

return [[NSData alloc] initWithBase64EncodedString:string options:options];}

MD5加密(MD5是一種摘要寂恬,而非加密,只是經(jīng)常與加密配合使用)

//對字符串?dāng)?shù)據(jù)進(jìn)行MD5的簽名

+ (NSString *)md5SignWithString:(NSString *)string{ ? ?

? ? const char *object = [string UTF8String];

? ? unsigned char result[CC_MD5_DIGEST_LENGTH];

? ? CC_MD5(object,(CC_LONG)strlen(object),result);

? ? NSMutableString *hash = [NSMutableString string];

? ? for (int i = 0; i < 16; i ++) {

? ? ? ? [hash appendFormat:@"%02X", result[i]];

? ? }

? ? return [hash lowercaseString];

} ??

//對二進(jìn)制數(shù)據(jù)進(jìn)行MD5的簽名

+ (NSData *)md5SignWithData:(NSData *)data{

Byte byte[CC_MD5_DIGEST_LENGTH]; ? ?//定義一個(gè)字節(jié)數(shù)組來接收結(jié)果 CC_MD5((const void*)([data bytes]), (CC_LONG)[data length], byte);

return ?[NSData dataWithBytes:byte length:CC_MD5_DIGEST_LENGTH];}

因?yàn)樗{(lán)牙4.0芯片自帶AES128加密算法,所以只要涉及到藍(lán)牙開發(fā)都會使用AES128加密算法

加密方法:

+(NSMutableData*)AES_NEW_AESEn:(NSMutableData*)plain pass:(NSMutableData*)key

{

// NSLog(@"key是%@",key);

charkeyPtr[kCCKeySizeAES128+1];

memset(keyPtr,0,sizeof(keyPtr));

[keygetBytes:keyPtrlength:sizeof(keyPtr)];

//NSLog(@"加密的KEY是%s",keyPtr);

NSData* data = [[NSDataalloc]initWithData:plain];

NSUIntegerdataLength = [datalength];

size_tbufferSize = dataLength +kCCBlockSizeAES128;

void*buffer =malloc(bufferSize);

size_tnumBytesEncrypted =0;

CCCryptorStatuscryptStatus =CCCrypt(kCCEncrypt,

kCCAlgorithmAES128,

kCCOptionPKCS7Padding|kCCOptionECBMode,

keyPtr,

kCCBlockSizeAES128,

NULL,

[databytes],

dataLength,

buffer,

bufferSize,

&numBytesEncrypted);

if(cryptStatus ==kCCSuccess) {

NSMutableData*resultData = [NSMutableDatadataWithBytes:bufferlength:numBytesEncrypted];

returnresultData;

}

free(buffer);

returnnil;

}

解密方法:

+(NSMutableData*)AES_NEW_AESDecrypt:(NSMutableData*)encryptText password:(NSMutableData*)key

{

charkeyPtr[kCCKeySizeAES128+1];

memset(keyPtr,0,sizeof(keyPtr));

[keygetBytes:keyPtrlength:sizeof(keyPtr)];

NSData*data=[[NSDataalloc]initWithData:encryptText];

NSUIntegerdataLength = [datalength];

size_tbufferSize = dataLength +kCCBlockSizeAES128;

void*buffer =malloc(bufferSize);

size_tnumBytesCrypted =0;

CCCryptorStatuscryptStatus =CCCrypt(kCCDecrypt,

kCCAlgorithmAES128,

kCCOptionECBMode,

keyPtr,

kCCBlockSizeAES128,

NULL,

[databytes],

dataLength,

buffer,

bufferSize,

&numBytesCrypted);

if(cryptStatus ==kCCSuccess) {

NSMutableData*resultData = [NSMutableDatadataWithBytesNoCopy:bufferlength:numBytesCrypted];

returnresultData;

}

free(buffer);

returnnil;

}

解密的時(shí)候沒帶 ?kCCOptionPKCS7Padding 如果發(fā)現(xiàn)需要就加上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末结啼,一起剝皮案震驚了整個(gè)濱河市掠剑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌郊愧,老刑警劉巖朴译,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異属铁,居然都是意外死亡眠寿,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門焦蘑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盯拱,“玉大人,你說我怎么就攤上這事例嘱〗品辏” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵拼卵,是天一觀的道長奢浑。 經(jīng)常有香客問我,道長腋腮,這世上最難降的妖魔是什么雀彼? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮即寡,結(jié)果婚禮上徊哑,老公的妹妹穿的比我還像新娘。我一直安慰自己聪富,他們只是感情好莺丑,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著墩蔓,像睡著了一般梢莽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钢拧,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天蟹漓,我揣著相機(jī)與錄音炕横,去河邊找鬼源内。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的膜钓。 我是一名探鬼主播嗽交,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼颂斜!你這毒婦竟也來了夫壁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沃疮,失蹤者是張志新(化名)和其女友劉穎盒让,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體司蔬,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邑茄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了俊啼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肺缕。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖授帕,靈堂內(nèi)的尸體忽然破棺而出同木,到底是詐尸還是另有隱情,我是刑警寧澤跛十,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布彤路,位于F島的核電站,受9級特大地震影響偶器,放射性物質(zhì)發(fā)生泄漏斩萌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一屏轰、第九天 我趴在偏房一處隱蔽的房頂上張望颊郎。 院中可真熱鬧,春花似錦霎苗、人聲如沸姆吭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽内狸。三九已至,卻和暖如春厘擂,著一層夾襖步出監(jiān)牢的瞬間昆淡,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工刽严, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留昂灵,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像眨补,于是被迫代替她去往敵國和親管削。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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

  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進(jìn)行加密后保存到用戶偏好設(shè)置( [NSUserDefaul...
    彬至睢陽閱讀 2,939評論 0 7
  • 常見的加密算法 MD5 \ SHA \ DES \ 3DES \ RC2和RC4 \ RSA \ IDEA \ D...
    小小啄閱讀 3,123評論 0 9
  • 首先羅列一些知識點(diǎn): 1.加密算法通常分為對稱性加密算法和非對稱性加密算法:對于對稱性加密算法,信息接收雙方都需事...
    JonesCxy閱讀 1,389評論 2 4
  • 1甘晤、設(shè)置UILabel行間距 NSMutableAttributedString* attrString = [[...
    十年一品溫如言1008閱讀 1,661評論 0 3
  • 分手當(dāng)天 冬天的某個(gè)晚上含潘,確定結(jié)束后我坐在路邊的某個(gè)長椅上毫無顧忌的大哭。無視路人的眼神线婚;無視坐在旁邊才認(rèn)識兩個(gè)月...
    easoneason閱讀 207評論 0 0