当前位置: 首页 > news >正文

android_iphone和java三个平台一致的加密方法_Android、iPhone和Java三个平台一致的加密工具...

//

//  DES3Util.m

//  lx100-gz

//

//  Created by  柳峰 on 12-9-17.

//  Copyright 2012 http://blog.csdn.net/lyq8479. All rights reserved.

//

#import "DES3Util.h"

#import 

#import "GTMBase64.h"

#define gkey            @"[email protected]$#365#$"

#define gIv             @"01234567"

@implementation DES3Util

// 加密方法

+ (NSString*)encrypt:(NSString*)plainText {

NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];

size_t plainTextBufferSize = [data length];

const void *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);

const void *vkey = (const void *) [gkey UTF8String];

const void *vinitVec = (const void *) [gIv UTF8String];

ccStatus = CCCrypt(kCCEncrypt,

kCCAlgorithm3DES,

kCCOptionPKCS7Padding,

vkey,

kCCKeySize3DES,

vinitVec,

vplainText,

plainTextBufferSize,

(void *)bufferPtr,

bufferPtrSize,

&movedBytes);

NSData *myData = [NSData dataWithBytes:(const void *)bufferPtr length:(NSUInteger)movedBytes];

NSString *result = [GTMBase64 stringByEncodingData:myData];

return result;

}

// 解密方法

+ (NSString*)decrypt:(NSString*)encryptText {

NSData *encryptData = [GTMBase64 decodeData:[encryptText dataUsingEncoding:NSUTF8StringEncoding]];

size_t plainTextBufferSize = [encryptData length];

const void *vplainText = [encryptData 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);

const void *vkey = (const void *) [gkey UTF8String];

const void *vinitVec = (const void *) [gIv UTF8String];

ccStatus = CCCrypt(kCCDecrypt,

kCCAlgorithm3DES,

kCCOptionPKCS7Padding,

vkey,

kCCKeySize3DES,

vinitVec,

vplainText,

plainTextBufferSize,

(void *)bufferPtr,

bufferPtrSize,

&movedBytes);

NSString *result = [[[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bufferPtr

length:(NSUInteger)movedBytes] encoding:NSUTF8StringEncoding] autorelease];

return result;

}

@end

相关文章:

  • java最崇拜谁_蓝桥杯(java)个人赛真题:小朋友崇拜圈
  • java数组函数结局实际问题_java函数与数组
  • java登录字符串封装_JAVA的随机的字符串的封装(基本上够用了)
  • java统一管理文字_为了统一管理组件和容器,Java为所有组件类定义的超类
  • django mysql 分表_Django数据库分表
  • php aws_Amazon S3 客户端加密与 AWS SDK for PHP 版本 3 - 适用于 PHP 的 AWS 开发工具包...
  • Php公钥加密data是空,实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
  • java做节奏大师,《节奏大师》高手必修之路 亲测攻略_iOS游戏频道_97973手游网
  • 注册php tp5,thinkphp5 开发会员注册与登录功能
  • php xml序列化,深入理解:XML与对象的序列化与反序列化
  • matlab ceil,Matlab中的取整函数fix, floor, ceil与round
  • php 创建mssql 表,在php表中显示MSSQL选择数据
  • matlab 热图,基于表格数据创建热图
  • getlocation.php,关于微信小程序 location API接口的解析
  • php 调用未定义方法,关于php:Laravel调用未定义的方法create()和save()
  • AngularJS指令开发(1)——参数详解
  • httpie使用详解
  • Javascript基础之Array数组API
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • laravel 用artisan创建自己的模板
  • maven工程打包jar以及java jar命令的classpath使用
  • Nodejs和JavaWeb协助开发
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 从setTimeout-setInterval看JS线程
  • 工作手记之html2canvas使用概述
  • 今年的LC3大会没了?
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前端面试总结(at, md)
  • 区块链共识机制优缺点对比都是什么
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 异常机制详解
  • Python 之网络式编程
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • ###STL(标准模板库)
  • #if和#ifdef区别
  • #pragma once与条件编译
  • #预处理和函数的对比以及条件编译
  • (11)MSP430F5529 定时器B
  • (4)Elastix图像配准:3D图像
  • (C语言)二分查找 超详细
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (十六)一篇文章学会Java的常用API
  • (四)图像的%2线性拉伸
  • (一) storm的集群安装与配置
  • (一)kafka实战——kafka源码编译启动
  • (转)setTimeout 和 setInterval 的区别
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET 材料检测系统崩溃分析