sunjce iOS des 3des解密加密
来源:互联网 发布:第三次农业普查数据 编辑:程序博客网 时间:2024/06/05 11:40
#import "AppDelegate.h"#import "GTMBase64.h"#import <Security/Security.h>#import <CommonCrypto/CommonCrypto.h>@interface AppDelegate ()@end#define Mykey @"你和后台约定好的key"@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 要解密的字符串 举例 NSString *str1 =@"*iTR33oAAylAUqEiuq6+q+3+qZgU1Apo7gOxx0EHn+hrQlpTulOviNQ==#";//要加密的字符串 举例 NSString *str2 = @"11111"; //去除前后符号 NSString *encryptStr = [str1substringWithRange:NSMakeRange(1, str1.length-2)]; //decrypted 解密 encrypted 加密 NSString *resultStr = [selfdecryptWithText:encryptStr andKey:Mykey]; NSString *resultStr2 = [self encryptWithText:str2 andKey:Mykey]; NSLog(@"resultStr--->%@",resultStr); NSLog(@"resultStr2-->%@",resultStr2); returnYES;}- (NSString *)encryptWithText:(NSString *)sText andKey:(NSString*)key{ //kCCEncrypt 加密 return [selfencrypt:sText encryptOrDecrypt:kCCEncryptkey:key];}- (NSString *)decryptWithText:(NSString *)sText andKey:(NSString*)key{ //kCCDecrypt 解密 return [selfencrypt:sText encryptOrDecrypt:kCCDecryptkey:key];}-(NSString *)encrypt:(NSString *)sText encryptOrDecrypt:(CCOperation)encryptOperation key:(NSString *)key{ constvoid *dataIn; size_t dataInLength; if (encryptOperation ==kCCDecrypt)//传递过来的是decrypt解码 { //解码 base64 NSData *decryptData = [GTMBase64decodeData:[sText dataUsingEncoding:NSUTF8StringEncoding]];//转成utf-8并decode dataInLength = [decryptData length]; dataIn = [decryptData bytes]; } else //encrypt { NSData* encryptData = [sTextdataUsingEncoding:NSUTF8StringEncoding]; dataInLength = [encryptData length]; dataIn = (constvoid *)[encryptData bytes]; } /* DES加密:用CCCrypt函数加密一下,然后用base64编码下,传过去 DES解密:把收到的数据根据base64,decode一下,然后再用CCCrypt函数解密,得到原本的数据 */ CCCryptorStatus ccStatus; uint8_t *dataOut =NULL; //可以理解位type/typedef的缩写(有效的维护了代码,比如:一个人用int,一个人用long。最好用typedef来定义) size_t dataOutAvailable =0; //size_t 是操作符sizeof返回的结果类型 size_t dataOutMoved =0; dataOutAvailable = (dataInLength + kCCBlockSizeDES) & ~(kCCBlockSizeDES -1); dataOut = malloc( dataOutAvailable *sizeof(uint8_t)); memset((void *)dataOut,0x0, dataOutAvailable);//将已开辟内存空间buffer的首 1个字节的值设为值 0 // NSString *initIv = @"12345678"; constvoid *vkey = (constvoid *) [key UTF8String];// const void *iv = (const void *) [initIv UTF8String]; //CCCrypt函数加密/解密 ccStatus = CCCrypt(encryptOperation,// 加密/解密 kCCAlgorithm3DES,// 加密根据哪个标准(des,3des,aes。。。。) kCCOptionPKCS7Padding|kCCOptionECBMode,// 选项分组密码算法(des:对每块分组加一次密 3DES:对每块分组加三个不同的密) vkey, //密钥 加密和解密的密钥必须一致 kCCKeySize3DES,// DES密钥的大小(kCCKeySizeDES=8) nil,// 可选的初始矢量 dataIn, //数据的存储单元 dataInLength,//数据的大小 (void *)dataOut,//用于返回数据 dataOutAvailable, &dataOutMoved); NSString *result =nil; if (encryptOperation ==kCCDecrypt)//encryptOperation==1 解码 { //得到解密出来的data数据,改变为utf-8的字符串 result = [[NSStringalloc] initWithData:[NSDatadataWithBytes:(constvoid *)dataOut length:(NSUInteger)dataOutMoved]encoding:NSUTF8StringEncoding]; } else//encryptOperation==0 (加密过程中,把加好密的数据转成base64的) { //编码 base64 NSData *data = [NSDatadataWithBytes:(constvoid *)dataOut length:(NSUInteger)dataOutMoved]; result = [GTMBase64stringByEncodingData:data]; } return result;}
0 0
- sunjce iOS des 3des解密加密
- DES/3DES加密,解密
- ios学习--IOS 3DES加密解密
- iOS 3DES加密 和 java 3DES 解密
- 3DES 加密解密
- 3des加密解密
- 3-DES加密解密
- 3DES加密解密
- 3des加密解密
- 3des加密解密
- 3DES 加密解密
- 3DES加密解密
- 3DES 加密解密
- 3DES 加密、解密
- 3DES 加密解密
- 3DES加密解密
- 3des加密解密
- iOS-OC-3DES加密和解密
- java设计模式——行为型之命令模式
- iOS Core Graphics 和 Core Animation
- mysql 的行转列
- Ubuntu中文语言包的安装
- iOS根据2个经纬度计算距离
- sunjce iOS des 3des解密加密
- Javaweb开发错误关于web.xml
- (4.5.1.4)Import Project(Eclipse ADT, Gradle,etc)(包括导入第三方Project项目(不是jar包形式))
- mysql dump备份方式 mysql还原操作练习
- FOJ Problem 1081 等分液体
- 摘抄:项目经理需知道的16件事
- git 常用命令
- 欧拉项目第15题 Lattice paths
- android 多线程数据库读写分析与优化