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

  • 相关阅读:
    Shell——2
    Vim-快捷命令
    Shell——1
    linux命令笔记
    小飞机 + zeal 安装
    linux 环境下 假设被cc攻击,请从linux日志文件找出黑客ip地址
    日志文件例子
    最大子列和的四种方法,时间复杂度递减,直至为线性复杂度
    递归很耗内存+多项式求值的两种方法+c语言计时方法
    线代 第六章 二次型
  • 原文地址:https://www.cnblogs.com/q403154749/p/3928115.html
Copyright © 2011-2022 走看看