- 浏览: 441935 次
- 性别:
- 来自: 北京
最新评论
-
咖啡动力:
mWebView载入的当然是网址了
Android使用webview,触发网页中链接的事件 以及webview加载本地html、本apk内html和远程URL -
咖啡动力:
还有我是女士哦
Android延迟执行 handler类的实现 -
咖啡动力:
是吗,还有这事,谢谢哦
Android延迟执行 handler类的实现 -
cfm1989:
兄弟,是这样的!!!!让我纠结了半个小时,要细心点mHandl ...
Android延迟执行 handler类的实现 -
白色蜻蜓:
遇到个iPhone开发者不易
从UIView转换UIImage(截屏是一样的)
头文件
#import <Foundation/Foundation.h>
@interface NSData (AESTest)
-(NSData*)AES256EncryptWithKey:(NSString*)key;
-(NSData*)AES256DecryptWithKey:(NSString*)key;
@end
实现文件
#import <CommonCrypto/CommonCryptor.h>
#import "NSData.h"
@implementation NSData(AESAdditions)
-(NSData*)AES256EncryptWithKey:(NSString *)key{
// 'key' should be 32 bytes for AES256, will be null-padded otherwise
char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
// fetch key data
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
//See the doc: For block ciphers, the output size will always be less than or
//equal to the input size plus the size of one block.
//That's why we need to add the size of one block here
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void* buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
keyPtr, kCCKeySizeAES256,
NULL /* initialization vector (optional) */,
[self bytes], dataLength, /* input */
buffer, bufferSize, /* output */
&numBytesEncrypted);
if (cryptStatus == kCCSuccess)
{
//the returned NSData takes ownership of the buffer and will free it on deallocation
return [NSMutableData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer); //free the buffer;
return nil;
}
- (NSData*)AES256DecryptWithKey:(NSString*)key {
// 'key' should be 32 bytes for AES256, will be null-padded otherwise
char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
// fetch key data
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
//See the doc: For block ciphers, the output size will always be less than or
//equal to the input size plus the size of one block.
//That's why we need to add the size of one block here
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void* buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
keyPtr, kCCKeySizeAES256,
NULL /* initialization vector (optional) */,
[self bytes], dataLength, /* input */
buffer, bufferSize, /* output */
&numBytesDecrypted);
if (cryptStatus == kCCSuccess)
{
//the returned NSData takes ownership of the buffer and will free it on deallocation
return [NSMutableData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer); //free the buffer;
return nil;
}
@end
调用
- (void)loadView {
NSString *key = @"my password";
NSString *secret = @"text to encrypt";
NSData *plain = [secret dataUsingEncoding:NSUTF8StringEncoding];
NSData *cipher = [plain AES256EncryptWithKey:key];
printf("............%s\n", [[cipher description] UTF8String]);
plain = [cipher AES256DecryptWithKey:key];
printf("............%s\n", [[plain description] UTF8String]);
printf("............%s\n", [[[NSString alloc] initWithData:plain encoding:NSUTF8StringEncoding] UTF8String]);
}
#import <Foundation/Foundation.h>
@interface NSData (AESTest)
-(NSData*)AES256EncryptWithKey:(NSString*)key;
-(NSData*)AES256DecryptWithKey:(NSString*)key;
@end
实现文件
#import <CommonCrypto/CommonCryptor.h>
#import "NSData.h"
@implementation NSData(AESAdditions)
-(NSData*)AES256EncryptWithKey:(NSString *)key{
// 'key' should be 32 bytes for AES256, will be null-padded otherwise
char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
// fetch key data
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
//See the doc: For block ciphers, the output size will always be less than or
//equal to the input size plus the size of one block.
//That's why we need to add the size of one block here
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void* buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
keyPtr, kCCKeySizeAES256,
NULL /* initialization vector (optional) */,
[self bytes], dataLength, /* input */
buffer, bufferSize, /* output */
&numBytesEncrypted);
if (cryptStatus == kCCSuccess)
{
//the returned NSData takes ownership of the buffer and will free it on deallocation
return [NSMutableData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer); //free the buffer;
return nil;
}
- (NSData*)AES256DecryptWithKey:(NSString*)key {
// 'key' should be 32 bytes for AES256, will be null-padded otherwise
char keyPtr[kCCKeySizeAES256 + 1]; // room for terminator (unused)
bzero(keyPtr, sizeof(keyPtr)); // fill with zeroes (for padding)
// fetch key data
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
//See the doc: For block ciphers, the output size will always be less than or
//equal to the input size plus the size of one block.
//That's why we need to add the size of one block here
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void* buffer = malloc(bufferSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
keyPtr, kCCKeySizeAES256,
NULL /* initialization vector (optional) */,
[self bytes], dataLength, /* input */
buffer, bufferSize, /* output */
&numBytesDecrypted);
if (cryptStatus == kCCSuccess)
{
//the returned NSData takes ownership of the buffer and will free it on deallocation
return [NSMutableData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
}
free(buffer); //free the buffer;
return nil;
}
@end
调用
- (void)loadView {
NSString *key = @"my password";
NSString *secret = @"text to encrypt";
NSData *plain = [secret dataUsingEncoding:NSUTF8StringEncoding];
NSData *cipher = [plain AES256EncryptWithKey:key];
printf("............%s\n", [[cipher description] UTF8String]);
plain = [cipher AES256DecryptWithKey:key];
printf("............%s\n", [[plain description] UTF8String]);
printf("............%s\n", [[[NSString alloc] initWithData:plain encoding:NSUTF8StringEncoding] UTF8String]);
}
发表评论
-
代理,kvo,nsnotification的区别
2015-07-16 12:28 01.效率肯定是delegate比ns ... -
iOS开发好的学习网站
2015-04-28 11:07 711http://www.ityran.com/forum-61- ... -
ios 新特性
2014-09-02 18:19 962转载地址:http://justsee.iteye.com/b ... -
在Xcode4.5中禁用ARC(Automatic Referencing Counting)
2014-09-01 20:54 757最近升级了xcode4.5,用 ... -
UIImagePickerController显示中文界面
2014-08-29 23:26 7341.Project-->Info-->Local ... -
Unknown type name 'NSString' NSUInteger
2014-08-12 16:15 1396Unknown type name 'NSString' ... -
XcodeDefault.xctoolchain/usr/bin/clang failed with exit code 1
2014-08-12 16:04 2048编绎旧工程出错 1.Command /Application ... -
block的简单用法
2014-03-24 16:20 0今天用到了下面个方法: presentViewControl ... -
ios程序员要如何面试
2014-03-24 15:06 8941 面试的目的 求职者通 ... -
IOS基础面试题(四)
2014-03-24 15:04 10051 谈谈对Block 的理解? ... -
IOS基础面试题(三)
2014-03-24 15:03 12061.When to use NSMutableArray an ... -
OS基础面试题(二)
2014-03-24 15:02 11171.Difference between shallow co ... -
IOS基础面试题(一)
2014-03-24 15:01 1238随着iOS平台开发的职位 ... -
App添加New Version时遇到的this bundle is invalid问题
2013-02-04 12:01 7529This bundle is invalid. the key ... -
xcode4.5.1、iphone5、ios6 适配
2013-01-25 09:29 3802xcode4.5.1、iphone5、ios6 适 ... -
Incorrect decrement of the reference count of an object that is not owned at thi
2013-01-22 16:51 18381,Incorrect decrement of the re ... -
The NIB data is invalid
2013-01-18 11:22 1152解决“The NIB data is invalid”的简单 ... -
Finishing up a navigation transition in an unexpected state. Navigation Bar
2013-01-13 23:57 1609Finishing up a navigation trans ... -
Unbalanced calls to begin/end appearance transitions for <uivewcontroller>
2013-01-13 21:05 13294Unbalanced calls to begin/end a ... -
nested push animation can result in corrupted navigation bar ,titleview重叠
2013-01-13 21:00 3745nested push animation can resul ...
相关推荐
苏林加密系统是一款专门为php加密的程序,支持sg11加密、xend加密、goto加密、Leave加密、enphp加密、NoName加密 可以发展用户,可以设置某加密价格,支持API接口加密,对接官方支付、码支付和易支付。 更新记录:...
其中,加密又分全盘加密(Android 4.4 引入)和文件级加密(Android 7.0 引入),本文将论述加密中的全盘加密的基本知识。全盘加密在 Android 4.4 中引入,在 Android 5.0 中做了比较大的更新。 本文部分片段摘自 ...
在实际操作中,经常采用混合加密模式:利用非对称加密算法交换对称加密算法的密钥,再利用对称加密算法加密实际数据,从而结合两种加密算法的优点。 总之,加密算法是信息安全领域的基石,合理选择和使用加密算法...
易语言 rsa加密 易语言 rsa加密易语言 rsa加密
Springboot项目报文加密(采用AES、RSA动态加密策略) Springboot项目报文加密(采用AES、RSA动态加密策略) Springboot项目报文加密(采用AES、RSA动态加密策略) Springboot项目报文加密(采用AES、RSA动态加密...
苏林加密系统是一款专门为php加密的程序,支持sg11加密、xend加密、goto加密、Leave加密、enphp加密、NoName加密 可以发展用户,可以设置某加密价格,支持API接口加密,对接官方支付、码支付和易支付。 更新记录:...
在IT安全领域,加密技术是保护数据隐私和安全的关键手段。加密主要分为两种类型:对称加密和非对称加密。这两种加密方式各有其特点,适用于不同的场景。 **对称加密** 是一种历史悠久的加密方法,它依赖于一个相同...
代理重加密(Proxy Re-Encryption)是一种在公钥加密系统中的高级加密技术,它允许一个可信的第三方(代理)在不获取原始密文内容的情况下,将一个用户加密的信息重加密成另一个用户能解密的形式。这项技术在云计算...
在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括 DES、3DES、AES 等。非对称...
在这个场景中,我们关注的是如何加密POST请求中的数据,以及如何通过工具如HttpWatch来查看这些加密数据。下面我们将深入探讨POST提交数据加密的原理、方法以及HttpWatch工具的使用。 首先,POST方法是HTTP协议中...
在VB6.0环境下开发的这个程序主要关注的是数据安全领域,特别是文件的加密与解密功能。VB(Visual Basic)是一种由微软公司推出的事件驱动编程语言,它以其易用性和丰富的控件库深受程序员喜爱。在这个特定的项目中...
本项目包含了一个C#实现的各种加密方式的小工具,包含了可以直接运行的源代码以及类库文件,用户不仅可以编译这些源代码,还可以直接运行它们,从而在实际项目中应用这些加密和解密技术。 首先,我们要理解加密和...
U盘加密软件移动硬盘加密-文件夹加密器lockdir 便携式文件夹加密器是一款高强度的文件夹加密软件,可以方便地加密任意文件夹,并且支持U盘加密,移动硬盘加密. 本软件界面简洁,操作简单,功能强大,性能超群,是...
迅影加密王是采用最新(AES256位)高强度加密算法的加密软件, 迅影 加密王将在您计算机磁盘中 的部分区域进行加密,并生成一个保险柜,将文件数据存放保险柜中即可加密,只有当用户使用自己的密码登录保险柜后才能浏览...
《易飞用户加密解密详解》 在信息技术领域,数据安全是至关重要的议题,而用户加密解密技术正是保障信息安全的重要手段。本文将围绕“易飞用户加密解密”这一主题,深入探讨其原理、应用及操作流程,帮助读者更好地...
在IT领域,加密技术是确保数据安全的重要手段。在这个场景中,我们讨论的是一个使用C++语言实现的异或(XOR)加密算法,用于对文件进行加密。异或加密是一种简单但有效的加密方法,尤其适用于初级加密需求或者理解加密...
单向加密 SHA1 单向加密 DES 双向,可解密 加密字符串 加密字符串 密钥为系统默认 加密文件 解密字符串 解密文件 128位MD5算法加密字符串 128位MD5算法加密Byte数组 32位MD5加密 Base64加密 Base64解密 DES加密/解密...
在IT行业中,加密技术是确保数据安全的重要手段之一。RSA是一种非对称加密算法,它基于数学难题的大数因子分解,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,因此得名RSA。本教程主要讲解如何在C# .NET...
加密狗加密锁型号检测工具(最新整理)含加密狗硬件id
在IT领域,加密技术是确保数据安全的重要手段。本文将深入探讨标题中提及的两种主要加密算法:DES(Data Encryption Standard)和RSA,并介绍如何利用它们对文件进行加密。我们将结合描述中的“提供了方便文件加密...