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

  • 相关阅读:
    移动端适配问题
    面试题
    c++学习之路
    es6特性
    ndoe安装依赖注意的问题
    如何阻止button默认的刷新页面操作
    npm 全局安装模块,出现XXX不是内部或外部命令解决方法
    .Net MVC系统源码与教学视频《资源分享系列6》
    Javascript书店课程设计《资源分享系列4》
    Python教程与源码《资源分享系列4》
  • 原文地址:https://www.cnblogs.com/q403154749/p/3928115.html
Copyright © 2011-2022 走看看