iOS 下 3DES加密算法

/**初始化向量*/

#define gIv@"0000000000000000"

這個要和后臺或者硬件確定好否則會結(jié)果不一樣

因?yàn)?DES的Key長度是24 被加密的的8的倍數(shù) 所以我在方法里面直接把key 補(bǔ)齊了

//加密方法

+ (NSData*)encrypt:(NSData*)plainText andkey:(NSData*)gkey {

NSMutableData*keydata = [[NSMutableDataalloc]init];

if(gkey.length<24)

{

NSMutableData*dddd = [[NSMutableDataalloc]initWithData:gkey];

[ddddappendData:gkey];

[ddddappendData:gkey];

keydata = [ddddsubdataWithRange:NSMakeRange(0,24)];

dddd =nil;

}

else

{

keydata = gkey;

}

size_tplainTextBufferSize = [plainTextlength];

constvoid*vplainText = (constvoid*)[plainTextbytes];

CCCryptorStatusccStatus;

uint8_t*bufferPtr =NULL;

size_tbufferPtrSize =0;

size_tmovedBytes =0;

bufferPtrSize = (plainTextBufferSize +kCCBlockSize3DES) & ~(kCCBlockSize3DES-1);

bufferPtr =malloc( bufferPtrSize *sizeof(uint8_t));

memset((void*)bufferPtr,0x0, bufferPtrSize);

// const void *vkey = (const void *) [gkey UTF8String];

//NSData * Keydata = [ccc dataWithHexString:gkey];

constvoid*keyvoid = (constvoid*)[keydatabytes];

constvoid*vinitVec = (constvoid*) [gIvUTF8String];

ccStatus =CCCrypt(kCCEncrypt,

kCCAlgorithm3DES,

kCCOptionPKCS7Padding|kCCOptionECBMode,

keyvoid,

kCCKeySize3DES,

vinitVec,

vplainText,

plainTextBufferSize,

(void*)bufferPtr,

bufferPtrSize,

&movedBytes);

NSMutableData*myData = [NSDatadataWithBytes:(constvoid*)bufferPtrlength:(NSUInteger)movedBytes];

NSMutableData*resultdata = [myDatasubdataWithRange:NSMakeRange(0, plainText.length)];

// [NSThread sleepForTimeInterval:0.01f];

returnresultdata;

}

//解密方法

+ (NSData*)decrypt:(NSData*)encryptText andkey:(NSData*)gkey

{

// [NSThread sleepForTimeInterval:0.02f];

NSMutableData*keydata = [[NSMutableDataalloc]init];

if(gkey.length<24)

{

NSMutableData*dddd = [[NSMutableDataalloc]initWithData:gkey];

[ddddappendData:gkey];

[ddddappendData:gkey];

keydata = [ddddsubdataWithRange:NSMakeRange(0,24)];

}

else

{

keydata = gkey;

}

//NSData *encryptData = [GTMBase64 decodeData:[encryptText dataUsingEncoding:NSUTF8StringEncoding]];

size_tplainTextBufferSize = [encryptTextlength];

constvoid*vplainText = [encryptTextbytes];

CCCryptorStatusccStatus;

uint8_t*bufferPtr =NULL;

size_tbufferPtrSize =0;

size_tmovedBytes =0;

bufferPtrSize = (plainTextBufferSize +kCCBlockSize3DES) & ~(kCCBlockSize3DES-1);

bufferPtr =malloc( bufferPtrSize *sizeof(uint8_t));

memset((void*)bufferPtr,0x0, bufferPtrSize);

constvoid*keyvoid = (constvoid*)[keydatabytes];

constvoid*vinitVec = (constvoid*) [gIvUTF8String];

ccStatus =CCCrypt(kCCDecrypt,

kCCAlgorithm3DES,

kCCOptionECBMode,

keyvoid,

kCCKeySize3DES,

vinitVec,

vplainText,

plainTextBufferSize,

(void*)bufferPtr,

bufferPtrSize,

&movedBytes);

NSData*myData = [NSDatadataWithBytes:(constvoid*)bufferPtrlength:(NSUInteger)movedBytes];

// [NSThread sleepForTimeInterval:0.01f];

returnmyData;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子柔袁,更是在濱河造成了極大的恐慌军援,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摄乒,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)莉御,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俗冻,“玉大人礁叔,你說我怎么就攤上這事∑。” “怎么了琅关?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長讥蔽。 經(jīng)常有香客問我涣易,道長人乓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任都毒,我火速辦了婚禮色罚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘账劲。我一直安慰自己戳护,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布瀑焦。 她就那樣靜靜地躺著腌且,像睡著了一般。 火紅的嫁衣襯著肌膚如雪榛瓮。 梳的紋絲不亂的頭發(fā)上铺董,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機(jī)與錄音禀晓,去河邊找鬼精续。 笑死,一個胖子當(dāng)著我的面吹牛粹懒,可吹牛的內(nèi)容都是我干的重付。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼凫乖,長吁一口氣:“原來是場噩夢啊……” “哼确垫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起帽芽,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤删掀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后导街,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體披泪,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年菊匿,在試婚紗的時候發(fā)現(xiàn)自己被綠了付呕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片计福。...
    茶點(diǎn)故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡跌捆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出象颖,到底是詐尸還是另有隱情佩厚,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布说订,位于F島的核電站抄瓦,受9級特大地震影響潮瓶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钙姊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一毯辅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧煞额,春花似錦思恐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至婚温,卻和暖如春描焰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背栅螟。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工荆秦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人力图。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓萄凤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親搪哪。 傳聞我的和親對象是個殘疾皇子靡努,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評論 2 359

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

  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進(jìn)行加密后保存到用戶偏好設(shè)置( [NSUserDefaul...
    彬至睢陽閱讀 2,939評論 0 7
  • 前幾天做項(xiàng)目的時候遇到了3DES的解密數(shù)據(jù),KEY是服務(wù)端返回的晓折。在網(wǎng)上查了好多篇文章惑朦,發(fā)現(xiàn)IOS中3DES...
    烽火七月閱讀 1,920評論 1 4
  • 引言 如今手機(jī)app五彩繽紛漾月,確保手機(jī)用戶的數(shù)據(jù)安全是開發(fā)人員必須掌握的技巧,下面通過實(shí)例介紹DES在androi...
    freesan44閱讀 1,143評論 1 1
  • 一葉一菩提胃珍,一花一世界梁肿。 今天是喜悅滿滿的一天,上午睡了個懶覺觅彰,6:40起床吩蔑,聽陽明心學(xué),家里做事出一身汗填抬,10點(diǎn)...
    天之心語閱讀 241評論 0 0
  • 不知道你們會不會有這種感覺:突然間很迷茫,不知道做些什么赘娄。有些文章會說你要讀書仆潮、出去運(yùn)動啊、思考啊等等遣臼,我自己...
    璇曰閱讀 209評論 0 0