【发布时间】:2026-01-06 15:05:03
【问题描述】:
我正在使用以下代码块加密文本字符串。 此代码与 AES256EncryptWithKey 的方法有关,但是当我运行项目并单击使用此代码的按钮时,会收到未捕获的异常和警告。警告说:“NSString 可能无法响应:'-AES256EncryptWithKey'”。我能做些什么?是否可以在其中放置一大块处理异常的代码?还是完全不同?
NSString *Input = [Inputbox text];
[Input AES256encryptWithKey];
这是我使用的与 AES256EncryptWithKey 相关的代码:
@implementation NSData (AES256)
- (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];
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 [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer); //free the buffer;
return nil;
}
提前谢谢你。感谢您提供链接、教程、答案和其他任何内容。
【问题讨论】:
标签: objective-c xcode cocoa-touch aes