IOS常用加密DES
NSString+DES.h
// // NSString+DES.h // haochang // // Created by Administrator on 14-4-15. // Copyright (c) 2014年 Administrator. All rights reserved. // #import <Foundation/Foundation.h> @interface NSString (DES) //加密 +(NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key; //解密 +(NSString *) decryptUseDES:(NSString *)plainText key:(NSString *)key; @end
NSString+DES.m
//
// NSString+DES.m
// haochang
//
// Created by Administrator on 14-4-15.
// Copyright (c) 2014年 Administrator. All rights reserved.
//
#import "NSString+DES.h"
#import <CommonCrypto/CommonCrypto.h>
@implementation NSString (DES)
//加密
+(NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key;
{
NSString *ciphertext = nil;
const char *textBytes = [plainText UTF8String];
NSUInteger dataLength = [plainText length];
unsigned ];
memset(buffer, , sizeof(char));
size_t numBytesEncrypted = ;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES,
kCCOptionPKCS7Padding,
[key UTF8String], kCCKeySizeDES,
NULL,
textBytes, dataLength,
buffer, ,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
ciphertext = [self dataTohexString:data];
}
return ciphertext;
}
//解密
+(NSString *) decryptUseDES:(NSString *)plainText key:(NSString *)key
{
NSString *cleartext = nil;
NSData *textData = [self hexStringToData:plainText];
NSUInteger dataLength = [textData length];
unsigned ];
memset(buffer, , sizeof(char));
size_t numBytesEncrypted = ;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES,kCCOptionPKCS7Padding,
[key UTF8String], kCCKeySizeDES,
NULL,
[textData bytes] , dataLength,
buffer, ,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
//NSLog(@"DES解密成功");
NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
cleartext = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}else{
//NSLog(@"DES解密失败");
}
return cleartext;
}
+ (NSString *)dataTohexString:(NSData*)data
{
Byte *bytes = (Byte *)[data bytes];
NSString *hexStr=@"";
;i<[data length];i++)
{
NSString *newHexStr = [NSString stringWithFormat:@"%x",bytes[i]&0xff];//16进制数
)
hexStr = [NSString stringWithFormat:@"%@0%@",hexStr,newHexStr];
else
hexStr = [NSString stringWithFormat:@"%@%@",hexStr,newHexStr];
}
return hexStr;
}
+ (NSData*)hexStringToData:(NSString*)hexString
{
//NSString *hexString = @"3e435fab9c34891f"; //16进制字符串
;
Byte bytes[hexString.length]; ///3ds key的Byte 数组, 128位
;i<[hexString length];i++)
{
int int_ch; /// 两位16进制数转化后的10进制数
unichar hex_char1 = [hexString characterAtIndex:i]; ////两位16进制数中的第一位(高位*16)
int int_ch1;
')
int_ch1 = (hex_char1-)*; //// 0 的Ascll - 48
else if(hex_char1 >= 'A' && hex_char1 <='F')
int_ch1 = (hex_char1-)*; //// A 的Ascll - 65
else
int_ch1 = (hex_char1-)*; //// a 的Ascll - 97
i++;
unichar hex_char2 = [hexString characterAtIndex:i]; ///两位16进制数中的第二位(低位)
int int_ch2;
')
int_ch2 = (hex_char2-); //// 0 的Ascll - 48
else if(hex_char1 >= 'A' && hex_char1 <='F')
int_ch2 = hex_char2-; //// A 的Ascll - 65
else
int_ch2 = hex_char2-; //// a 的Ascll - 97
int_ch = int_ch1+int_ch2;
//NSLog(@"int_ch=%x",int_ch);
bytes[j] = int_ch; ///将转化后的数放入Byte数组里
j++;
}
// NSData *newData = [[NSData alloc] initWithBytes:bytes length:j];
NSData *newData = [[NSData alloc] initWithBytes:bytes length:j];
//NSLog(@"newData=%@",newData);
return newData;
}
@end
IOS常用加密DES的更多相关文章
- iOS常用加密方法(aes、md5、base64)
1.代码 iOS常用加密方法(aes.md5.base64) .AES加密 NSData+AES.h文件 // // NSData-AES.h // Smile // // Created by 周 ...
- iOS常用加密之RSA加密解密
前言: iOS常用的加密有很多种,前两天在工作中遇到了RSA加密,现在把代吗分享出来. RSA基本原理 RSA使用"秘匙对"对数据进行加密解密.在加密解密数据前,需要先生成公钥(p ...
- IOS常用加密GTMBase64
GTMDefines.h // // GTMDefines.h // // Copyright 2008 Google Inc. // // Licensed under the Apache Lic ...
- IOS常用加密Encryption
NSString+Encryption.h // // NSString+Encryption.h // haochang // // Created by Administrator on 14-4 ...
- iOS代码加密常用加密方式
iOS代码加密常用加密方式 iOS代码加密常用加密方式,常见的iOS代码加密常用加密方式算法包括MD5加密.AES加密.BASE64加密,三大算法iOS代码加密是如何进行加密的,且看下文 MD5 iO ...
- 在IOS中使用DES算法对Sqlite数据库进行内容加密存储并读取解密
在IOS中使用DES算法对Sqlite 数据库进行内容加密存储并读取解密 涉及知识点: 1.DES加密算法: 2.OC对Sqlite数据库的读写: 3.IOS APP文件存储的两种方式及读取方式. 以 ...
- iOS常用的加密方式--备用
MD5 iOS代码加密 创建MD5类,代码如下 #import <Foundation/Foundation.h> @interface CJMD5 : NSObject +(NSStri ...
- Asp.Net 常用工具类之加密——对称加密DES算法(2)
又到周末,下午博客园看了两篇文章,关于老跳和老赵的程序员生涯,不禁感叹漫漫程序路,何去何从兮! 转眼毕业的第三个年头,去过苏州,跑过上海,从一开始的凌云壮志,去年背起行囊默默回到了长沙准备买房,也想有 ...
- iOS常用的加密方式
MD5 iOS代码加密 创建MD5类,代码如下 #import <Foundation/Foundation.h> @interface CJMD5 : NSObject +(NSStri ...
随机推荐
- JavaScript的匿名函数和模块化的使用方法
对于开发人员来说,很多时候我们都会涉及到JavaScript的使用,而在使用过程中,最令人沮丧的就是变量没有相应的使用范围. 在开发中,对于任何变量.数组.函数.对象等,只要不在函数的内部,都会被默认 ...
- IntelliJ IDEA 快捷键和设置
IntelliJ IDEA 使用总结 http://my.oschina.net/xianggao/blog/97539 IntelliJ IDEA 问题解决:1.乱码,主要是快捷键的字样显示乱码 中 ...
- Android中SearchView修改字体颜色
首先获取searchView控件,比如在actionbar上获取: SearchView searchView = (SearchView) menu.findItem(R.id.action_sea ...
- c/c++基本问题
1. 使用g++将文件编译成库文件 g++ -c -O2 -fPIC test.cpp -o test.o && g++ -shared -Wall -o test.so test.o ...
- Apache实现Web Server负载均衡
修改服务器A上apache的http.conf文件: 首先,加载相应的代理模块,去掉以下模块前面的#号: LoadModule proxy_module modules/mod_proxy.soLoa ...
- NSLog的使用
1.NSLog会将字符串打印在两个地方:操作系统的控制台和IDE的控制台. 2.对于NSLog来说,它打印的一个目的地并非控制台,而是系统文件“system.log”. 它另一个输出的目的地并非IED ...
- OpenFileDialog使用方法
OpenFileDialog基本属性 AddExtension 控制是否将扩展名自动添加到文件名上 CheckFileExists 指示用户指定不存在的文件时是否显示警告 CheckPathExist ...
- Winform开发常用控件之Checkbox和CheckedListBox
Winform的开发基本都是基于控件事件的,也就是事件驱动型的. 多选框的放置和值的获取有很多种,这里介绍几个简单常用的方法 1.直接放置Checkbox,并获取Checkbox的值 上图 做法也非常 ...
- Android Material Design:基于CoordinatorLayout实现向上滚动导航条ToolBar滚出、向下滚动导航条滚出
activity_main.xml: <android.support.design.widget.CoordinatorLayout xmlns:android="http://sc ...
- MySQL远程访问授权
开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 3306 端口,否则远程是无法通过 330 ...