📜  目标 c 加密解密字符串 - Objective-C (1)

📅  最后修改于: 2023-12-03 15:40:59.123000             🧑  作者: Mango

目标C加密解密字符串 - Objective-C

在iOS开发中,经常涉及到数据的加密与解密,以保障数据的安全性。本文将介绍如何使用Objective-C对字符串进行加密与解密。

加密算法

iOS SDK中提供了一些常用的加密算法,如Base64、AES、MD5等。

Base64加密

Base64是一种将二进制数据编码为ASCII字符的方法,常用于在HTTP等环境下传输较长的标识信息。在iOS SDK中,可以使用以下方法对字符串进行Base64加密:

NSString *originString = @"Hello World!";
NSData *originData = [originString dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64EncodedString = [originData base64EncodedStringWithOptions:0];
NSLog(@"%@", base64EncodedString);

在上述代码中,我们先将字符串转换为NSData类型,然后调用NSData的base64EncodedStringWithOptions方法进行加密。加密完成后,我们可以通过NSLog输出加密后的字符串。

AES加密

AES是一种高级加密标准,是一种对称加密算法,支持128位、192位和256位长度的密钥。在iOS SDK中,可以使用CommonCrypto框架下的API对数据进行AES加密。以下是一个简单的AES加密示例:

NSString *originString = @"Hello World!";
NSString *key = @"1234567890abcdef";
NSString *iv = @"abcdef1234567890";
NSData *originData = [originString dataUsingEncoding:NSUTF8StringEncoding];

// 对数据进行加密
NSData *encryptedData = [originData AES256EncryptWithKey:key iv:iv];
NSString *encryptedString = [encryptedData base64EncodedStringWithOptions:0];
NSLog(@"%@", encryptedString);

// 对数据进行解密
NSData *decryptedData = [encryptedData AES256DecryptWithKey:key iv:iv];
NSString *decryptedString = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];
NSLog(@"%@", decryptedString);

在上述代码中,我们使用了AES256的加密模式,密钥长度为16字节,偏移量为16字节。对数据进行加密时,我们先将字符串转换为NSData类型,然后调用 AES256EncryptWithKey:iv: 方法进行加密。加密完成后,我们将加密后的NSData类型数据转换为Base64编码的字符串格式输出。对数据进行解密时,我们使用 AES256DecryptWithKey:iv: 方法进行解密,将解密后的NSData类型数据转换为字符串类型并输出。

MD5加密

MD5是一种基于单向散列函数的加密算法,通常用于验证数据的完整性以及防止数据被篡改。在iOS SDK中,可以使用以下方法对字符串进行MD5加密:

NSString *originString = @"Hello World!";
NSData *originData = [originString dataUsingEncoding:NSUTF8StringEncoding];
uint8_t digest[CC_MD5_DIGEST_LENGTH];
CC_MD5(originData.bytes, (CC_LONG)originData.length, digest);
NSMutableString *md5String = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
     [md5String appendFormat:@"%02x", digest[i]];
}
NSLog(@"%@", md5String);

在上述代码中,我们先将字符串转换为NSData类型,然后使用CC_MD5函数对数据进行MD5加密。加密完成后,我们将加密结果转换为十六进制字符串输出。

解密算法

解密的过程往往与加密的过程相反,使用相同的算法和密钥可以得到原始的明文数据。

Base64解密

在iOS SDK中,可以使用以下方法对Base64编码的字符串进行解密:

NSString *base64EncodedString = @"SGVsbG8gV29ybGQh";
NSData *base64Data = [[NSData alloc] initWithBase64EncodedString:base64EncodedString options:0];
NSString *originString = [[NSString alloc] initWithData:base64Data encoding:NSUTF8StringEncoding];
NSLog(@"%@", originString);

在上述代码中,我们先将Base64编码的字符串转换为NSData类型,然后调用NSData的initWithBase64EncodedString:options方法进行解密。解密完成后,我们将NSData类型数据转换为字符串类型输出。

AES解密

在iOS SDK中,可以使用以下方法对AES加密的数据进行解密:

NSString *encryptedString = @"q3vLjzM6Os0U6YbwWFcVqg==";
NSString *key = @"1234567890abcdef";
NSString *iv = @"abcdef1234567890";
NSData *encryptedData = [[NSData alloc] initWithBase64EncodedString:encryptedString options:0];

// 对数据进行解密
NSData *decryptedData = [encryptedData AES256DecryptWithKey:key iv:iv];
NSString *decryptedString = [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];
NSLog(@"%@", decryptedString);

在上述代码中,我们先将Base64编码的字符串转换为NSData类型,然后调用 AES256DecryptWithKey:iv: 方法进行解密。解密完成后,我们将NSData类型数据转换为字符串类型输出。

回到本文的主题

本文介绍了在iOS开发中常用的加密和解密算法,并使用示例代码演示了如何对字符串进行加密和解密。大家也可以根据需要选择其他的加密算法进行数据加密和解密。

对于Objective-C开发者,掌握加密和解密算法是一项必备的技能,也是保障数据安全的重要措施。希望本文能够对大家有所启发,有什么问题和建议欢迎在评论区留言。