DES加密 解密

最近項(xiàng)目中要求用des加密 , 之前沒(méi)有用到過(guò), 查了很多資料,為了給大家節(jié)省時(shí)間 直接上代碼 des首先要用到GTMBase64,github上就能下載,主要要到GTMBase64.h,GTMBase64.m,GTMDefines這三個(gè).

下面的復(fù)制過(guò)去就可以用了 不過(guò)在弄得時(shí)候要注意 一些字典轉(zhuǎn)jsonstring 或者 jsonstring轉(zhuǎn)字典 你可能會(huì)用到.

.h中

#import#import "GTMBase64.h"#import@interface DES : NSObject

+ (NSString *)encryptWithText:(NSString *)sText;//加密

+ (NSString *)decryptWithText:(NSString *)sText;//解密

+ (NSString*)dictionaryToJson:(NSDictionary *)dic;


.m中

#import "DES.h"

@implementation DES

+ (NSString*)dictionaryToJson:(NSDictionary *)dic

{

NSError *parseError = nil;

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];

return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

}

+ (NSString *)encryptWithText:(NSString *)sText

{

//kCCEncrypt 加密

return [self encrypt:sText encryptOrDecrypt:kCCEncrypt key:@"跟后臺(tái)商量好的key"];

}

+ (NSString *)decryptWithText:(NSString *)sText

{

//kCCDecrypt 解密

return [self encrypt:sText encryptOrDecrypt:kCCDecrypt key:@"跟后臺(tái)商量好的key"];

}

+ (NSString *)encrypt:(NSString *)sText encryptOrDecrypt:(CCOperation)encryptOperation key:(NSString *)key

{

const void *dataIn;

size_t dataInLength;

if (encryptOperation == kCCDecrypt)//傳遞過(guò)來(lái)的是decrypt 解碼

{

//解碼 base64

NSData *decryptData = [GTMBase64 decodeData:[sText dataUsingEncoding:NSUTF8StringEncoding]];//轉(zhuǎn)成utf-8并decode

dataInLength = [decryptData length];

dataIn = [decryptData bytes];

}

else? //encrypt

{

NSData* encryptData = [sText dataUsingEncoding:NSUTF8StringEncoding];

dataInLength = [encryptData length];

dataIn = (const void *)[encryptData bytes];

}

/*

DES加密 :用CCCrypt函數(shù)加密一下狡逢,然后用base64編碼下,傳過(guò)去

DES解密 :把收到的數(shù)據(jù)根據(jù)base64,decode一下,然后再用CCCrypt函數(shù)解密,得到原本的數(shù)據(jù)

*/

CCCryptorStatus ccStatus;

uint8_t *dataOut = NULL; //可以理解位type/typedef 的縮寫(有效的維護(hù)了代碼父丰,比如:一個(gè)人用int斧账,一個(gè)人用long玻靡。最好用typedef來(lái)定義)

size_t dataOutAvailable = 0; //size_t? 是操作符sizeof返回的結(jié)果類型

size_t dataOutMoved = 0;

dataOutAvailable = (dataInLength + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);

dataOut = malloc( dataOutAvailable * sizeof(uint8_t));

memset((void *)dataOut, 0x0, dataOutAvailable);//將已開(kāi)辟內(nèi)存空間buffer的首 1 個(gè)字節(jié)的值設(shè)為值 0

NSString *initIv = @"跟后臺(tái)商量好的iv";

const void *vkey = (const void *) [key UTF8String];

const void *iv = (const void *) [initIv UTF8String];

//CCCrypt函數(shù) 加密/解密

ccStatus = CCCrypt(encryptOperation,//? 加密/解密

kCCAlgorithmDES,//? 加密根據(jù)哪個(gè)標(biāo)準(zhǔn)(des著蟹,3des,aes梢莽。萧豆。。昏名。)

kCCOptionPKCS7Padding,//? 選項(xiàng)分組密碼算法(des:對(duì)每塊分組加一次密? 3DES:對(duì)每塊分組加三個(gè)不同的密)

vkey,? //密鑰? ? 加密和解密的密鑰必須一致

kCCKeySizeDES,//? DES 密鑰的大袖汤住(kCCKeySizeDES=8)

iv, //? 可選的初始矢量

dataIn, // 數(shù)據(jù)的存儲(chǔ)單元

dataInLength,// 數(shù)據(jù)的大小

(void *)dataOut,// 用于返回?cái)?shù)據(jù)

dataOutAvailable,

&dataOutMoved);

NSString *result = nil;

if (encryptOperation == kCCDecrypt)//encryptOperation==1? 解碼

{

//得到解密出來(lái)的data數(shù)據(jù),改變?yōu)閡tf-8的字符串

result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)dataOut length:(NSUInteger)dataOutMoved] encoding:NSUTF8StringEncoding];

}

else //encryptOperation==0? (加密過(guò)程中轻局,把加好密的數(shù)據(jù)轉(zhuǎn)成base64的)

{

//編碼 base64

NSData *data = [NSData dataWithBytes:(const void *)dataOut length:(NSUInteger)dataOutMoved];

result = [GTMBase64 stringByEncodingData:data];

}

return result;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洪鸭,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子仑扑,更是在濱河造成了極大的恐慌览爵,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镇饮,死亡現(xiàn)場(chǎng)離奇詭異蜓竹,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)储藐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門俱济,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人钙勃,你說(shuō)我怎么就攤上這事蛛碌。” “怎么了辖源?”我有些...
    開(kāi)封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵蔚携,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我克饶,道長(zhǎng)浮梢,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任彤路,我火速辦了婚禮秕硝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己远豺,他們只是感情好奈偏,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著躯护,像睡著了一般惊来。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上棺滞,一...
    開(kāi)封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天裁蚁,我揣著相機(jī)與錄音,去河邊找鬼继准。 笑死枉证,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的移必。 我是一名探鬼主播室谚,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼崔泵!你這毒婦竟也來(lái)了秒赤?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤憎瘸,失蹤者是張志新(化名)和其女友劉穎入篮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體幌甘,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡崎弃,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了含潘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饲做。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖遏弱,靈堂內(nèi)的尸體忽然破棺而出盆均,到底是詐尸還是另有隱情,我是刑警寧澤漱逸,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布泪姨,位于F島的核電站,受9級(jí)特大地震影響饰抒,放射性物質(zhì)發(fā)生泄漏肮砾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一袋坑、第九天 我趴在偏房一處隱蔽的房頂上張望仗处。 院中可真熱鬧,春花似錦、人聲如沸婆誓。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)洋幻。三九已至郁轻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間文留,已是汗流浹背好唯。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留燥翅,地道東北人骑篙。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像权旷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贯溅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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

  • /**ios常見(jiàn)的幾種加密方法: 普通的加密方法是講密碼進(jìn)行加密后保存到用戶偏好設(shè)置( [NSUserDefaul...
    彬至睢陽(yáng)閱讀 2,912評(píng)論 0 7
  • 引言 如今手機(jī)app五彩繽紛它浅,確保手機(jī)用戶的數(shù)據(jù)安全是開(kāi)發(fā)人員必須掌握的技巧译柏,下面通過(guò)實(shí)例介紹DES在androi...
    freesan44閱讀 1,120評(píng)論 1 1
  • 首先羅列一些知識(shí)點(diǎn): 1.加密算法通常分為對(duì)稱性加密算法和非對(duì)稱性加密算法:對(duì)于對(duì)稱性加密算法,信息接收雙方都需事...
    JonesCxy閱讀 1,371評(píng)論 2 4
  • DES全稱為Data EncryptionStandard姐霍,即數(shù)據(jù)加密標(biāo)準(zhǔn)鄙麦,是一種使用密鑰加密的塊算法,1977年...
    黃曉果閱讀 1,242評(píng)論 0 0
  • 風(fēng)往遠(yuǎn)方吹 那每年每月的懷念 吹過(guò)了多少離別 又帶去了多少遇見(jiàn) 那些地方有你的回憶 你的月下祈愿的人生 那晚花開(kāi)成...
    歐陽(yáng)半月閱讀 145評(píng)論 2 0