本文将带你了解IOS开发入门之iOS 3DES加密  和 java  3DES 解密,希望本文对大家学ios有所帮助

对称加密算法 3des   在iOS 客户端加密算法

首先进入头文件:

#import

#import

#import

-(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");    /*else   if (ccStatus == kCC ParamError) return @"PARAM ERROR";     else if (ccStatus == kCCBufferTooSmall)   return @"BUFFER TOO SMALL";       else if (ccStatus == kCCMemoryFailure) return @"MEMORY   FAILURE";     else if (ccStatus ==   kCCAlignmentError) return @"ALIGNMENT";     else if (ccStatus == kCCDecodeError)   return @"DECODE ERROR";       else if (ccStatus == kCCUnimplemented) return   @"UNIMPLEMENTED"; */          NSString *result;        if   (encryptOrDecrypt == kCCDecrypt)      {        result = [[[NSString   alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr                                                                  length:(NSUInteger)movedBytes]                                          encoding:NSUTF8StringEncoding]                  autorelease];    }      else    {        NSData *myData = [NSData   dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];        result = [GTMBase64   stringByEncodingData:myData];    }        return result;}

上面还有个DESKEY宏定义是

#define   kChosenDigestLength CC_SHA1_DIGEST_LENGTH #define DESKEY   @"D6D2402F1C98E208FF2E863AA29334BD65AE1932A821502D9E5673CDE3C713ACFE53E2103CD40ED6BEBB101B484CAE83D537806C6CB611AEE86ED2CA8C97BBE95CF8476066D419E8E833376B850172107844D394016715B2E47E0A6EECB3E83A361FA75FA44693F90D38C6F62029FCD8EA395ED868F9D718293E9C0E63194E87"

java客户端 3DES 解密和加密算法

public static String encryptThreeDESECB(String   src,String key) throws Exception{      DESedeKeySpec dks = new   DESedeKeySpec(key.getBytes("UTF-8"));    SecretKeyFactory keyFactory =   SecretKeyFactory.getInstance("DESede");    SecretKey securekey =   keyFactory.generateSecret(dks);          Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");    cipher.init(Cipher.ENCRYPT_MODE,   securekey);    byte[]   b=cipher.doFinal(src.getBytes());          BASE64Encoder encoder = new BASE64Encoder();    return   encoder.encode(b).replaceAll("\r",   "").replaceAll("\n", "");    } //3DESECB解密,key必须是长度大于等于 3*8 = 24 位public   static String decryptThreeDESECB(String src,String key) throws   Exception{    //--通过base64,将字符串转成byte数组    BASE64Decoder decoder = new   BASE64Decoder();    byte[] bytesrc =   decoder.decodeBuffer(src);    //--解密的key    DESedeKeySpec dks = new   DESedeKeySpec(key.getBytes("UTF-8"));    SecretKeyFactory keyFactory =   SecretKeyFactory.getInstance("DESede");    SecretKey securekey =   keyFactory.generateSecret(dks);          //--Chipher对象解密    Cipher cipher =   Cipher.getInstance("DESede/ECB/PKCS5Padding");    cipher.init(Cipher.DECRYPT_MODE,   securekey);    byte[] retByte =   cipher.doFinal(bytesrc);        return   new String(retByte);}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!

java ios 3des_IOS开发入门之iOS 3DES加密 和 java 3DES 解密相关推荐

  1. linux 股票指南针,IOS开发入门之ios指南针

    本文将带你了解IOS开发入门之ios指南针,希望本文对大家学IOS有所帮助 参考http://blog.sina.com.cn/s/blog_4a37054201013nhr.html 可运行的代码如 ...

  2. ios保存gif到相册_IOS开发入门之iOS GIF图片导入到相册处理方法

    本文将带你了解IOS开发入门之iOS GIF图片导入到相册处理方法,希望对大家学IOS有所帮助 iOS GIF图片导入到相册处理方法 通过路径转成data数据,写入本地相册就行了: Java代码   ...

  3. IOS 初级开发入门教程(四)基础控件使用小练习

    前言 看完前面3章的内容,基本对IOS开发有一些认识了,这章我们开始动手去实践做点小练习,学习如何创建并设置标签和按钮(Label & Button)的相关属性,以及通过一个交互式的案例演示动 ...

  4. #java #web jsp开发入门(web应用概述、tomcat简介、编写步骤)

    #java #web jsp开发入门与编写步骤(web应用概述.tomcat简介.编写步骤) 目录 #java #web jsp开发入门与编写步骤(web应用概述.tomcat简介.编写步骤) 1.w ...

  5. java基础的开发入门

    一.JDK的安装 二.java程序的开发入门 配置环境变量 运行第一个程序 命令窗口的几个操作   一.JDK的安装 Oracle公司提供了多个操作系统的JDK,不同的操作系统的JDK在使用上基本相似 ...

  6. IOS 初级开发入门教程(一)介绍篇

    导读 目前移动端开发市场上引导开发者追求技多不压身,一个全栈开发者至少要懂后台服务器.数据库.Android.web.ios开发等."一超多强"是指开发者先成为一门技术的专家然后掌 ...

  7. IOS 初级开发入门教学(一)介绍篇

    导读 目前移动端开发市场上引导开发者追求技多不压身,一个全栈开发者至少要懂后台服务器.数据库.Android.web.ios开发等.一超多强"是指开发者先成为一门技术的专家然后掌握了解多门技 ...

  8. android 地球坐标 火星坐标系,IOS开发入门之iOS开发火星坐标系与地球坐标系解析...

    本文将带你了解IOS开发入门iOS开发火星坐标系与地球坐标系解析,希望本文对大家学IOS有所帮助. iOS开发火星坐标系与地球坐标系解析. 在开发过程中,遇到一个问题,安卓和iOS传同样的经纬度给后台 ...

  9. android 艾特功能实现,IOS开发入门之iOS反编译实例之hook微信艾特所有人功能实现...

    本文将带你了解IOS开发入门iOS反编译实例之hook微信艾特所有人功能实现,希望本文对大家学IOS有所帮助. 研究了一段时间反编译逆向工程,只是略微了解了一些皮毛,最近忙的事情太杂,就简单写一下吧. ...

最新文章

  1. JavaScript中 for、for in、for of、forEach等使用总结
  2. ansible-playbook jdk安装
  3. apache证书不受信任_苹果iOS手动安装和信任企业级应用
  4. std string与线程安全,是std :: regex线程安全吗?
  5. window打开IIS
  6. H.264 视频编码器的研究与分析
  7. 一篇Word论文的字体格式是什么?
  8. 电脑键盘部分按键失灵_笔记本键盘个别按键失灵怎么处理win10
  9. 肩外展固定支架的规格参数介绍和使用方法
  10. 图片处理之thumbnailator和TwelveMonkeys的使用
  11. python实现multi函数参数个数不限、返回所有参数乘积_实现multi()函数,参数个数不限,返回所有参数的乘积。_学小易找答案...
  12. 爬虫——Python爬英文文献ScienceDirect论文的标题、摘要,并保存在本地
  13. tr闭包_蓝色的梦 的动态 - SegmentFault 思否
  14. KMP(字符串匹配)+字符串哈希
  15. 日本开发“后5G”技术 速度达5倍
  16. JavaScript 数组之every
  17. ESP8266+DHT11温湿度传感器+小爱同学语音智能LED灯(状态可视化)
  18. 什么是swift闭包?
  19. Ubuntu系统安装Wine环境运行流量精灵教程
  20. DNF 关键组件Gameloader.exe

热门文章

  1. 恶意软件免杀与技术(2022.10.08)
  2. flutter-Decoration
  3. java程序员实习刚进入公司一般会安排做什么?
  4. OPPO 全球首发 Android 13 正式版,适配率超 96%!
  5. 【详解】位运算符:位逻辑运算符,位移运算符(<<左移,>>右移)
  6. 10. 项目沟通管理与干系人管理
  7. echart自定义图分享之自定百分比的(箱线图/盒须图)
  8. Java的本地内存 直接内存 元空间
  9. 【STM32F429的DSP教程】第2章 Matlab R2018a的安装
  10. 如何修清净心?(净空老法师法语)