iPhone 上 NSString 的 AES 加密

作者:编程家 分类: ios 时间:2025-05-05

使用AES加密在iPhone上对NSString进行加密是一种常见的安全措施。AES(Advanced Encryption Standard)是一种对称加密算法,被广泛应用于数据加密和保护领域。在iOS开发中,我们可以使用CommonCrypto库中的函数来实现AES加密和解密操作。

代码示例:

首先,我们需要导入CommonCrypto库:

Objective-C

#import

然后,我们可以定义一个方法来进行AES加密:

Objective-C

- (NSString *)AES128Encrypt:(NSString *)plainText withKey:(NSString *)key {

NSData *plainData = [plainText dataUsingEncoding:NSUTF8StringEncoding];

NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];

uint8_t iv[kCCBlockSizeAES128];

memset((void *) iv, 0x0, (size_t) sizeof(iv));

size_t bufferSize = plainData.length + kCCBlockSizeAES128;

void *buffer = malloc(bufferSize);

size_t numBytesEncrypted = 0;

CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,

kCCAlgorithmAES128,

kCCOptionPKCS7Padding,

keyData.bytes,

kCCKeySizeAES128,

iv,

plainData.bytes,

plainData.length,

buffer,

bufferSize,

&numBytesEncrypted);

if (cryptStatus == kCCSuccess) {

NSData *encryptedData = [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];

return [encryptedData base64EncodedStringWithOptions:0];

}

free(buffer);

return nil;

}

以上代码中,我们使用了AES128算法,通过传入的明文和密钥进行加密操作。加密后的数据以Base64编码的形式返回。

接下来,我们可以定义一个方法来进行AES解密:

Objective-C

- (NSString *)AES128Decrypt:(NSString *)encryptedText withKey:(NSString *)key {

NSData *encryptedData = [[NSData alloc] initWithBase64EncodedString:encryptedText options:0];

NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];

uint8_t iv[kCCBlockSizeAES128];

memset((void *) iv, 0x0, (size_t) sizeof(iv));

size_t bufferSize = encryptedData.length + kCCBlockSizeAES128;

void *buffer = malloc(bufferSize);

size_t numBytesDecrypted = 0;

CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,

kCCAlgorithmAES128,

kCCOptionPKCS7Padding,

keyData.bytes,

kCCKeySizeAES128,

iv,

encryptedData.bytes,

encryptedData.length,

buffer,

bufferSize,

&numBytesDecrypted);

if (cryptStatus == kCCSuccess) {

NSData *decryptedData = [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];

return [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];

}

free(buffer);

return nil;

}

以上代码中,我们使用了与加密相同的AES128算法,通过传入的密文和密钥进行解密操作。解密后的数据以NSString的形式返回。

使用AES加密的优点

使用AES加密可以有效保护敏感数据的安全性。AES算法是一种高强度的加密算法,被广泛认可并应用于许多领域。与其他加密算法相比,AES加密速度较快,安全性较高。

使用AES加密的案例

一个常见的案例是在iOS应用中对用户的登录信息进行加密存储。例如,我们可以使用AES加密技术对用户的用户名和密码进行加密,然后将加密后的数据存储在本地数据库或服务器中。当用户进行登录操作时,我们可以使用相同的密钥和解密算法对存储的加密信息进行解密,以验证用户的身份。

Objective-C

NSString *username = @"exampleUsername";

NSString *password = @"examplePassword";

NSString *encryptionKey = @"exampleEncryptionKey";

NSString *encryptedUsername = [self AES128Encrypt:username withKey:encryptionKey];

NSString *encryptedPassword = [self AES128Encrypt:password withKey:encryptionKey];

// 将加密后的用户名和密码存储到数据库或服务器

// ...

// 当用户进行登录操作时,从数据库或服务器中获取加密的用户名和密码

NSString *encryptedUsernameFromDB = @"encryptedUsernameFromDB";

NSString *encryptedPasswordFromDB = @"encryptedPasswordFromDB";

NSString *decryptedUsername = [self AES128Decrypt:encryptedUsernameFromDB withKey:encryptionKey];

NSString *decryptedPassword = [self AES128Decrypt:encryptedPasswordFromDB withKey:encryptionKey];

// 使用解密后的用户名和密码进行用户身份验证

// ...

以上案例中,我们使用AES加密算法对用户名和密码进行加密,并将加密后的数据存储到数据库或服务器。当用户进行登录操作时,我们可以使用相同的密钥和解密算法对存储的加密信息进行解密,以验证用户的身份。

在iPhone上使用AES加密对NSString进行加密是一种常见的安全措施。通过使用CommonCrypto库中的函数,我们可以轻松实现AES加密和解密操作。AES加密算法具有高强度和较高的安全性,因此被广泛应用于数据保护领域。在iOS开发中,我们可以将AES加密应用于用户登录信息的存储和验证等场景,以保护用户的敏感数据安全。