IOS OC代码模式ECB 填充pkcs5padding 数据块128 密码PMe4bvLko 偏移量无 输出base64 字符集UTF8
以下是一个在iOS中使用OC代码进行ECB模式加密的示例,使用了PKCS5Padding填充,数据块大小为128位,密码为"PMe4bvLko",偏移量为0,输出结果为Base64编码,字符集为UTF8:
#import <CommonCrypto/CommonCryptor.h>
#import "NSData+Base64.h"
NSString *encryptECBWithPKCS5PaddingAndBase64Encoding(NSString *plainText, NSString *password) {
NSData *plainData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
NSData *passwordData = [password dataUsingEncoding:NSUTF8StringEncoding];
size_t bufferSize = [plainData length] + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionECBMode|kCCOptionPKCS7Padding, [passwordData bytes], kCCKeySizeAES128, NULL, [plainData bytes], [plainData length], buffer, bufferSize, &numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
NSData *encryptedData = [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
NSString *base64EncodedString = [encryptedData base64EncodedString];
return base64EncodedString;
}
free(buffer);
return nil;
}
NSString *plainText = @"Hello World!";
NSString *password = @"PMe4bvLko";
NSString *encryptedString = encryptECBWithPKCS5PaddingAndBase64Encoding(plainText, password);
NSLog(@"Encrypted String: %@", encryptedString);
这里使用了一个名为NSData+Base64的类别,用于将加密后的NSData对象转换为Base64编码的字符串。你可以使用以下方法将其添加到项目中:
- 创建一个名为
NSData+Base64.h的新文件,并将以下代码粘贴到文件中:
#import <Foundation/Foundation.h>
@interface NSData (Base64)
+ (NSData *)dataFromBase64String:(NSString *)base64String;
- (NSString *)base64EncodedString;
@end
- 创建一个名为
NSData+Base64.m的新文件,并将以下代码粘贴到文件中:
#import "NSData+Base64.h"
@implementation NSData (Base64)
+ (NSData *)dataFromBase64String:(NSString *)base64String {
NSData *decodedData = [[NSData alloc] initWithBase64EncodedString:base64String options:0];
return decodedData;
}
- (NSString *)base64EncodedString {
NSString *base64String = [self base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
return base64String;
}
@end
完成后,你可以使用上面的encryptECBWithPKCS5PaddingAndBase64Encoding函数来加密数据,并将加密后的字符串保存在encryptedString变量中
原文地址: https://www.cveoy.top/t/topic/hIF7 著作权归作者所有。请勿转载和采集!