+ (NSString*)TripleDES:(NSString*)plainText encryptOrDecrypt:(CCOperation)encryptOrDecrypt
{
    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 *)[DESKEY 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");
    
    
    NSString *result;
    
    if (encryptOrDecrypt == kCCDecrypt)
    {
        result = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes] encoding:NSUTF8StringEncoding];
    }
    else
    {
        NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];
        result = [GTMBase64 stringByEncodingData:myData];
    }
    
    return result;
}

iOS-OC-3DES加密和解密相关推荐

  1. 探讨NET Core数据进行3DES加密或解密弱密钥问题

    [导读]之前写过一篇<探讨.NET Core数据进行3DES加密和解密问题>,最近看到有人提出弱密钥问题,换个强密钥不就完了吗,猜测可能是与第三方对接导致很无奈不能更换密钥,所以产生本文解 ...

  2. 3DES加密、解密工具类

    一个简单的3DES加密.解密工具类,Base64在 sun.misc.BASE64Decoder替代类有介绍 package com.w; import java.security.Key; impo ...

  3. 探讨.NET Core数据进行3DES加密和解密问题

    前言 一直困扰着我关于数据加密这一块,24号晚上用了接近3个小时去完成一项任务,本以为立马能解决,但是为了保证数据的安全性,我们开始去对数据进行加密,然后接下来3个小时专门去研究加密这一块,然而用着用 ...

  4. 3des加密 java php_java的3DES加密PHP7解密备忘录

    前言: 有一个项目需要跟甲方做接口,甲方使用的是java的3DES加密解密方式. 甲方加密解密部分截图代码: 填写图片摘要(选填) 第一步: 将甲方的iv转成PHP可以使用的偏移量 填写图片摘要(选填 ...

  5. DES/3DES加密,解密

    〇.前言 最近在项目中,涉及到与第三方厂家系统进行对接时,在参数传递过程中考虑到了数据的安全性,故双方采用3DES进行对传递参数的加解密,因此,进一步了解了下3DES的加解密算法,再次进行梳理. 一. ...

  6. js的3DES加密与解密

    3DES的加密与解密 Base64与Hex Base64与Hex都属于编码形式,Hex又称Base16.在3DES的加密与解密过程中,需要进行两种编码形式的转换. 3DES的加密 首先first.ht ...

  7. 加密系列 | 3DES加密和解密算法详解代码示例

    3DES的在Java的实现与DES类似,如下代码为3DES加密算法.CBC模式.PKCS5Padding填充方式的加密解密结果,参考代码如下所示: import java.security.Key;i ...

  8. ios swift5 AES加密,解密

    用第三框架CryptoSwift CryptoSwift - github 下面的代码本人亲测有效 do {let aes = try AES(key: "keykeykeykeykeyk& ...

  9. 7.node.js的3DES 加密和解密的方法封装

    原文:http://blog.csdn.net/ererfei/article/details/73558226 1 var assert = require('assert'); 2 var cry ...

  10. Java实现3DES加密解密(DESede/ECB/PKCS5Padding使用)

    一.简介 3DES(又叫Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称. 它相当于是对每个数据块应用三次DES加密算 ...

最新文章

  1. RxJava 过滤操作符 distinct 和 distinctUntilChanged
  2. Jprofiler注册码
  3. Apache访问日志详解
  4. Windows Server 2008壮烈牺牲
  5. 从设备像素比到移动适配
  6. linux键盘输入重复,关于修改键盘输入
  7. java:蓝桥杯练习 分解质因数
  8. 在android添加数据采集,一种基于Android系统的地理信息数据采集方法与流程
  9. java 包装类_Java中的包装类
  10. 【选手分享】菜鸡到大佬的蜕变技巧
  11. 手把手教你用Vue.js封装Form组件
  12. c 语言申明头文件和实现分开简单例子
  13. 什么是云计算,云计算运营方式和部署方式介绍
  14. iis中应用程序服务器错误,iis应用程序服务器错误
  15. 免费打工仔:一个完善的ActiveX Web控件教程
  16. 《23种设计模式之单例模式(4种实现)》
  17. 编程入门之学哪种编程语言?
  18. 外包岗退退退!坚决不能选的三点理由:简历有污点,稳定性极差,福利待遇差!...
  19. 网狐棋牌客户端连接服务器修改方法
  20. 华为OJ——参数解析

热门文章

  1. 概率论与数理统计知识
  2. Red Wine Quality(红酒品质相关数据集)
  3. 迷你宠物机器人Vector,随时随地与你互动
  4. 最牛ks短视频评论采集软件
  5. Scrapy--CrawlSpider
  6. 手动删除百度全家桶流氓软件
  7. 著书立说,就现在——IT东方会T-Book出书专场第二期圆满举办
  8. 4.murmur连接超时
  9. vue-seamless-scroll的使用以及实例
  10. 毕业设计 基于stm32的火灾报警系统设计与实现 - 单片机 物联网