java ios 3des_IOS开发入门之iOS 3DES加密 和 java 3DES 解密
本文将带你了解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 解密相关推荐
- linux 股票指南针,IOS开发入门之ios指南针
本文将带你了解IOS开发入门之ios指南针,希望本文对大家学IOS有所帮助 参考http://blog.sina.com.cn/s/blog_4a37054201013nhr.html 可运行的代码如 ...
- ios保存gif到相册_IOS开发入门之iOS GIF图片导入到相册处理方法
本文将带你了解IOS开发入门之iOS GIF图片导入到相册处理方法,希望对大家学IOS有所帮助 iOS GIF图片导入到相册处理方法 通过路径转成data数据,写入本地相册就行了: Java代码 ...
- IOS 初级开发入门教程(四)基础控件使用小练习
前言 看完前面3章的内容,基本对IOS开发有一些认识了,这章我们开始动手去实践做点小练习,学习如何创建并设置标签和按钮(Label & Button)的相关属性,以及通过一个交互式的案例演示动 ...
- #java #web jsp开发入门(web应用概述、tomcat简介、编写步骤)
#java #web jsp开发入门与编写步骤(web应用概述.tomcat简介.编写步骤) 目录 #java #web jsp开发入门与编写步骤(web应用概述.tomcat简介.编写步骤) 1.w ...
- java基础的开发入门
一.JDK的安装 二.java程序的开发入门 配置环境变量 运行第一个程序 命令窗口的几个操作 一.JDK的安装 Oracle公司提供了多个操作系统的JDK,不同的操作系统的JDK在使用上基本相似 ...
- IOS 初级开发入门教程(一)介绍篇
导读 目前移动端开发市场上引导开发者追求技多不压身,一个全栈开发者至少要懂后台服务器.数据库.Android.web.ios开发等."一超多强"是指开发者先成为一门技术的专家然后掌 ...
- IOS 初级开发入门教学(一)介绍篇
导读 目前移动端开发市场上引导开发者追求技多不压身,一个全栈开发者至少要懂后台服务器.数据库.Android.web.ios开发等.一超多强"是指开发者先成为一门技术的专家然后掌握了解多门技 ...
- android 地球坐标 火星坐标系,IOS开发入门之iOS开发火星坐标系与地球坐标系解析...
本文将带你了解IOS开发入门iOS开发火星坐标系与地球坐标系解析,希望本文对大家学IOS有所帮助. iOS开发火星坐标系与地球坐标系解析. 在开发过程中,遇到一个问题,安卓和iOS传同样的经纬度给后台 ...
- android 艾特功能实现,IOS开发入门之iOS反编译实例之hook微信艾特所有人功能实现...
本文将带你了解IOS开发入门iOS反编译实例之hook微信艾特所有人功能实现,希望本文对大家学IOS有所帮助. 研究了一段时间反编译逆向工程,只是略微了解了一些皮毛,最近忙的事情太杂,就简单写一下吧. ...
最新文章
- JavaScript中 for、for in、for of、forEach等使用总结
- ansible-playbook jdk安装
- apache证书不受信任_苹果iOS手动安装和信任企业级应用
- std string与线程安全,是std :: regex线程安全吗?
- window打开IIS
- H.264 视频编码器的研究与分析
- 一篇Word论文的字体格式是什么?
- 电脑键盘部分按键失灵_笔记本键盘个别按键失灵怎么处理win10
- 肩外展固定支架的规格参数介绍和使用方法
- 图片处理之thumbnailator和TwelveMonkeys的使用
- python实现multi函数参数个数不限、返回所有参数乘积_实现multi()函数,参数个数不限,返回所有参数的乘积。_学小易找答案...
- 爬虫——Python爬英文文献ScienceDirect论文的标题、摘要,并保存在本地
- tr闭包_蓝色的梦 的动态 - SegmentFault 思否
- KMP(字符串匹配)+字符串哈希
- 日本开发“后5G”技术 速度达5倍
- JavaScript 数组之every
- ESP8266+DHT11温湿度传感器+小爱同学语音智能LED灯(状态可视化)
- 什么是swift闭包?
- Ubuntu系统安装Wine环境运行流量精灵教程
- DNF 关键组件Gameloader.exe
热门文章
- 恶意软件免杀与技术(2022.10.08)
- flutter-Decoration
- java程序员实习刚进入公司一般会安排做什么?
- OPPO 全球首发 Android 13 正式版,适配率超 96%!
- 【详解】位运算符:位逻辑运算符,位移运算符(<<左移,>>右移)
- 10. 项目沟通管理与干系人管理
- echart自定义图分享之自定百分比的(箱线图/盒须图)
- Java的本地内存 直接内存 元空间
- 【STM32F429的DSP教程】第2章 Matlab R2018a的安装
- 如何修清净心?(净空老法师法语)