zoukankan      html  css  js  c++  java
  • 使用DES加解密

    这里使用框架提供的des加解密库: 首先引入头文件 #import <CommonCrypto/CommonCryptor.h>

    主要的加解密函数如下:

    /*字符串加密
     *参数
     *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] autorelease];
        }
        return ciphertext;
    }
     
    //解密
    + (NSString *) decryptUseDES:(NSString*)cipherText key:(NSString*)key 
    {
        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);
        NSString* plainText = nil;
        if (cryptStatus == kCCSuccess) {
            NSData* data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted];
            plainText = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
        }
        return plainText;
    }

    注:函数中使用到了Base64的编解码,请到下面地址中下载相应库
    http://www.jguoer.com/blog/wp-content/uploads/2010/1/base64.zip

  • 相关阅读:
    POJ 1416 Shredding Company
    HDU 2289 Cup
    Django Mysql数据库-F查询和Q查询
    Django Mysql数据库-聚合查询与分组查询
    Django Mysql数据库-基于双下划线的跨表查询
    centos下cp -r 命令可拷贝文件夹
    查看linux下mysql版本
    速卖通 排序规则解析
    跨境电商 -- 普及
    学习外贸英语单词--通过速卖通来学习句子和单词的含义
  • 原文地址:https://www.cnblogs.com/q403154749/p/3928115.html
Copyright © 2011-2022 走看看