您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在Objective-C中,你可以使用CommonCrypto库来实现数据加密。CommonCrypto是一个C语言编写的加密库,它提供了多种加密算法,如AES、DES、RSA等。以下是一个使用AES加密和解密的例子:
首先,确保你的项目中已经导入了<CommonCrypto/CommonCryptor.h>
头文件。
#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonCryptor.h>
@interface AESUtil : NSObject
+ (NSData *)aesEncryptData:(NSData *)data key:(NSData *)key iv:(NSData *)iv;
@end
@implementation AESUtil
+ (NSData *)aesEncryptData:(NSData *)data key:(NSData *)key iv:(NSData *)iv {
size_t cryptSize = [data length] + kCCBlockSizeAES128;
void *cryptData = malloc(cryptSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
kCCAlgorithmAES,
kCCOptionPKCS7Padding,
[key bytes],
[key length],
[iv bytes],
[data bytes],
[data length],
cryptData,
cryptSize,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
cryptData = realloc(cryptData, numBytesEncrypted);
return [NSData dataWithBytesNoCopy:cryptData length:numBytesEncrypted];
}
free(cryptData);
return nil;
}
@end
#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonCryptor.h>
@interface AESUtil : NSObject
+ (NSData *)aesDecryptData:(NSData *)data key:(NSData *)key iv:(NSData *)iv;
@end
@implementation AESUtil
+ (NSData *)aesDecryptData:(NSData *)data key:(NSData *)key iv:(NSData *)iv {
size_t cryptSize = [data length] + kCCBlockSizeAES128;
void *cryptData = malloc(cryptSize);
size_t numBytesDecrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
kCCAlgorithmAES,
kCCOptionPKCS7Padding,
[key bytes],
[key length],
[iv bytes],
[data bytes],
[data length],
cryptData,
cryptSize,
&numBytesDecrypted);
if (cryptStatus == kCCSuccess) {
cryptData = realloc(cryptData, numBytesDecrypted);
return [NSData dataWithBytesNoCopy:cryptData length:numBytesDecrypted];
}
free(cryptData);
return nil;
}
@end
#import <Foundation/Foundation.h>
#import "AESUtil.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *originalString = @"Hello, World!";
NSData *originalData = [originalString dataUsingEncoding:NSUTF8StringEncoding];
NSString *keyString = @"1234567890123456"; // 16字节密钥
NSString *ivString = @"1234567890123456"; // 16字节初始化向量
NSData *keyData = [keyString dataUsingEncoding:NSUTF8StringEncoding];
NSData *ivData = [ivString dataUsingEncoding:NSUTF8StringEncoding];
NSData *encryptedData = [AESUtil aesEncryptData:originalData key:keyData iv:ivData];
NSData *decryptedData = [AESUtil aesDecryptData:encryptedData key:keyData iv:ivData];
NSString *decryptedString = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];
NSLog(@"Decrypted String: %@", decryptedString);
}
return 0;
}
这个例子展示了如何使用AES算法对数据进行加密和解密。请注意,密钥和初始化向量的长度必须符合所选算法的要求。在这个例子中,我们使用了AES-128位加密,所以密钥和初始化向量的长度都是16字节。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。