码迷,mamicode.com
首页 > 编程语言 > 详细

DES 算法

时间:2015-04-13 22:56:35      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

没经过验证的抄袭,真的很悲催,估计过一段时间自己应用的时候也会觉得很蛋疼。话不多说,上干货。。。。

/*字符串加密

 *参数

 *plainText : 加密明文

 *key        : 密钥 64

 */

+ (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key

{

    NSString *ciphertext = nil;

    const char *textBytes = [plainText UTF8String];

    NSUInteger dataLength = [plainText length];

    unsigned char buffer[1024];

    memset(buffer, 0, sizeof(char));

    Byte iv[] = {1,2,3,4,5,6,7,8};

    size_t numBytesEncrypted = 0;

    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,

                                          kCCAlgorithmDES,

                                          kCCOptionPKCS7Padding,

                                          [key UTF8String],

                                          kCCKeySizeDES,

                                          iv,

                                          textBytes,

                                          dataLength,

                                          buffer,

                                          1024,

                                          &numBytesEncrypted);

    

    if (cryptStatus == kCCSuccess) {

        NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];

        

        ciphertext = [[NSString alloc] initWithData:[GTMBase64 encodeData:data] encoding:NSUTF8StringEncoding];

    }

    return ciphertext;

}


//解密

+ (NSString *) decryptUseDES:(NSString*)cipherText key:(NSString*)key

{

    NSString* plainText = nil;

    NSData* cipherData = [GTMBase64 decodeString:cipherText];

    unsigned char buffer[1024];

    memset(buffer, 0, sizeof(char));

    size_t numBytesDecrypted = 0;

    Byte iv[] = {1,2,3,4,5,6,7,8};

    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,

                                          kCCAlgorithmDES,

                                          kCCOptionPKCS7Padding,

                                          [key UTF8String],

                                          kCCKeySizeDES,

                                          iv,

                                          [cipherData bytes],

                                          [cipherData length],

                                          buffer,

                                          1024,

                                          &numBytesDecrypted);

    

    if (cryptStatus == kCCSuccess) {

        NSData* data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted];

        plainText = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    }

    return plainText;

}



加密解密全部搞定。。。。

注意:项目中需要导入GTMBase64,看清楚不是base64。如果使用base64的同学,请自行修改代码。

DES 算法

标签:

原文地址:http://blog.csdn.net/learnios/article/details/45033327

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!