iOS 3DES加密

本文转载至 http://www.cocoachina.com/bbs/read.php?tid=177167

-(NSString *)TripleDES:(NSString *)plainText encryptOrDecrypt:(CCOperation)encryptOrDecrypt encryptOrDecryptKey:(NSString *)encryptOrDecryptKey

{

    

    const void *vplainText;

    size_t plainTextBufferSize;

    

    if (encryptOrDecrypt == kCCDecrypt)//解密

    {

        NSData *EncryptData = [GTMBase64 decodeData:[plainText dataUsingEncoding:NSUTF8StringEncoding]];

        plainTextBufferSize = [EncryptData length];

        vplainText = [EncryptData bytes];

    }

    else //加密

    {

        NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];

        plainTextBufferSize = [data length];

        vplainText = (const void *)[data bytes];

    }

    

    CCCryptorStatus ccStatus;

    uint8_t *bufferPtr = NULL;

    size_t bufferPtrSize = 0;

    size_t movedBytes = 0;

    

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

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

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

    // memset((void *) iv, 0x0, (size_t) sizeof(iv));

    

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

    // NSString *initVec = @"init Vec";

    //const void *vinitVec = (const void *) [initVec UTF8String];

    //  Byte iv[] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF};

    ccStatus = CCCrypt(encryptOrDecrypt,

                       kCCAlgorithm3DES,

                       kCCOptionPKCS7Padding | kCCOptionECBMode,

                       vkey,

                       kCCKeySize3DES,

                       nil,

                       vplainText,

                       plainTextBufferSize,

                       (void *)bufferPtr,

                       bufferPtrSize,

                       &movedBytes);

    //if (ccStatus == kCCSuccess) NSLog(@"SUCCESS");

    /*else if (ccStatus == kCC ParamError) return @"PARAM ERROR";

     else if (ccStatus == kCCBufferTooSmall) return @"BUFFER TOO SMALL";

     else if (ccStatus == kCCMemoryFailure) return @"MEMORY FAILURE";

     else if (ccStatus == kCCAlignmentError) return @"ALIGNMENT";

     else if (ccStatus == kCCDecodeError) return @"DECODE ERROR";

     else if (ccStatus == kCCUnimplemented) return @"UNIMPLEMENTED"; */

    

    NSString *result;

    

    if (encryptOrDecrypt == kCCDecrypt)

    {

        result = [[[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr

                                                                length:(NSUInteger)movedBytes]

                                        encoding:NSUTF8StringEncoding]

                  autorelease];

    }

    else

    {

        NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];

        result = [GTMBase64 stringByEncodingData:myData];

    }

    

    return result;

}

 

时间: 2024-10-11 18:51:31

iOS 3DES加密的相关文章

iOS 3DES加密解密(一行代码搞定)

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解:3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法. 3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密.数据加密标

简进祥==iOS 3DES加密解密

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称.它相当于是对每个数据块应用三次DES加密算法.由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解:3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法. 3DES又称Triple DES,是DES加密算法的一种模式,它使用3条56位的密钥对数据进行三次加密.数据加密标

iOS POS之3DES加密

最近在做支付类APP,遇到了很多以前没遇到过的东西.接下来我会用这系列文章来记录我所遇到的问题. 首先就是在组8583报文时用到的3DES加密.8583报文是以字节为单位的所以可能3DES加密会有稍许不同. 我自己搞这个问题也搞了两天,最后还是拜托一个高手给搞定的. 我在网上也搜了很多资料最后发现有一帖子很接近答案.链接如下: http://www.cocoachina.com/bbs/read.php?tid=245410 请教高手所做的就是把哈希那句给去掉然后稍微做下处理,有兴趣的同学可以自

iOS代码加密的几种方式

众所周知的是大部分iOS代码一般不会做加密加固,因为iOS APP一般是通过AppStore发布的,而且苹果的系统难以攻破,所以在iOS里做代码加固一般是一件出力不讨好的事情.万事皆有例外,不管iOS.adr还是js,加密的目的是为了代码的安全性,虽然现在开源畅行,但是不管个人开发者还是大厂皆有保护代码安全的需求,所以iOS代码加固有了生存的土壤.下面简单介绍下iOS代码加密的几种方式. iOS代码加密的几种方式 1.字符串加密 字符串会暴露APP的很多关键信息,攻击者可以根据从界面获取的字符串

3DES 加密 解密

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #c91b13 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #1d9421 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo } p.p4 { margin: 0.0px 0.0px 0.0px 0.

Java实现3DES加密--及ANSI X9.8 Format标准 PIN PAN获取PIN BlOCK

1, 采用银联ANSI X9.8标准 PIN xor PAN获取PIN BlOCK 2, 采用3Des进行加密 参考: des和3Des加密算法实现 要点:因为3DES是对称加密算法,key是24位,当只有16位时,后8位取key的前8位 ANSI X9.8标准 PIN xor PAN获取PIN BlOCK (1) ANSI X9.8 Format(不带主账号信息) PIN(个人识别码 Personal Identity Number)总共有8个byte长度,分为两个部分;(类似数据包的格式)

iOS base64加密解密

本文转载至 http://jingyan.baidu.com/article/93f9803fff45c9e0e46f5596.html 从参考资料的地址中下载GTMBase64.zip库文件包,并解压,获得GTMBase64.h,GTMBase64.m和GTMDefines.h三个文件. 将解压得到的三个文件,添加到项目中. 新建一个base64的类,在base64.h中天假四个函数: + (NSString*)encodeBase64String:(NSString*)input; + (N

iOS代码加密常用加密方式

在今天的面试中,被问到了iOS是采用什么进行加密解密操作的,我的回答是这样的:AES,MD5,Base 64,然后是对这几种加密算法进行了一下简单的介绍和概述和几种算法之间的不同点和优缺点.然而,收到的回答是:这些都不是iOS的加密!我顿时就无语了,这不就是iOS加密所用到的方法么?然后向面试官请教了一下:MD5是一种摘要....什么叫加密呢?加密是客户端对数据加密和服务器端采用秘钥对数据进行解密处理,为了数据的安全考虑.要说加密应该是RSA.幸亏之前有了解过RSA,只是了解的不是很彻底和清楚.

iOS——常用加密方式

iOS代码加密常用加密方式,常见的iOS代码加密算法包括MD5加密.AES加密.BASE64加密. 三大算法iOS代码加密是如何进行加密的: /////////////////////////////////////////////////////////////////// MD5 iOS代码加密使用方法 /////////////////////////////////////////////////////////////////// //创建MD5类,代码如下 #import <Foun