Json 为什么我的AES 256解密方法无法运行iOS 14

Json 为什么我的AES 256解密方法无法运行iOS 14,json,objective-c,encryption,aes,ios14,Json,Objective C,Encryption,Aes,Ios14,在获得后端响应后,我尝试使用AES 256方法从JSON解密字符串值,每个值都正确解析,但当我尝试解密加密的字符串值时,我的方法始终返回null,JSON响应为: dataResponseString: { "subjects": [ { "name": "test1", "version": 1, "createdAt": "20

在获得后端响应后,我尝试使用AES 256方法从JSON解密字符串值,每个值都正确解析,但当我尝试解密加密的字符串值时,我的方法始终返回null,JSON响应为:

dataResponseString: {
"subjects": [
    {
        "name": "test1",
        "version": 1,
        "createdAt": "2021-05-12T03:15:12.741Z",
        "createdBy": "dmostajo",
        "subject": "WLSdQGDlb2CbBtKoK/ukbYv1HOl5ZVZo9P5VRV9426GMurhKD5o7U53MfvYaLmogJCYz32s8uz4B0HxBawlph3sgfdDieA3Lxh8D4WLLXqwY2psVasukKV1HTR9Jst1cI3O/vorvheSRvBb4JZQYotmhVPsjEkSc2xJ5ewyBCL0uv3VRWwe4qhB94Q1F/EowW5s3aH9CRlf/H9hJg1ougyX1ZL02OydMrFMXCwZSALHKLT6kCase/oHTTGyuDvs8xzLk3QSBiUO2G9ppeXmRxYB/sPAFpDI8eV2T5/O+xlIP/LLE/eyKe+wEfxWlKG1uAwiVhfrHmFMueRG7Hv6DJ/s63M2o3vziB6zfX832rQc="
    },
    {
        "name": "test2",
        "version": 1,
        "createdAt": "2021-04-15T16:16:35.206Z",
        "createdBy": "dmostajo",
        "subject": "WLSdQGDlb2CbBtKoK/ukbc1429tOxdpzEE6W/leNEoWJCIzf+R7D6u+FSu1JDXgIGiF5pgh5BJQK3yNJVYxLYsaL3kpP2yL2ALPILY6WdWBA/GJFo3s6Y0rMeEh4UBkb/yDNqbZhK2hrn3e+zvFQYG6i0+rE3rhXkTlRcRWmXB0JRTg7pTt2BtNOe+CynG3SgwowYv+R/244Ab6z/Tg+ejKs41wrKCJcBsiU5Yl18oUCeiycmQYtgRoX+yz2o5X1F/arIDi2pdCBIIS1n7sII+woRL2C0o9N5YJl3zzWnF0RwxmkSPKz7j71+sHO4OIGw+tiaKPDTfQf3K0ViQezEVHO9jAxPglkcEtMm5T1A/dWSTZQv4HjAwQ8ZjmZ5Y25Qki7oQgNStyKPxHafINj8g=="
    }
]
}

我使用的整个代码是:

  • 要从后端获取响应,请执行以下操作:
  • md5方法工作正常:
  • AES助手:
  • 日志显示:
是我第一次使用这种方法加密,加密方法也正常工作,我遇到的奇怪问题是解密方法,还是我做了一些错事缺少一些细节或什么,我看到了许多答案和问题,或者我如何将字符串值从JSON正确地转换为NSData作为密码数据?或者你的建议是什么,谢谢

更新1:

回顾一下,当我在不解析的情况下直接复制主题字符串进行解密时,解密方法工作正常:

NSString *test = @"oTd6+L9Lt/cWCMUPE1XvqSrTA9orCIPTWGNqbCw55SJzvB0mmFBqZfFI7pmqy7MdPc8AhSrFDFXsCjR6O+GOhGcYV3punTShjynSREI863449fzED7I/Y9vZFQr3CB3Hfbw/fEXfCEorCXhlI703GWOT4be68pPpayLus1bZuLXUT4iek1P/Gj94UH0GaNQJZFT8lwywZ34mzPt7YfnqK2X4Amj2ebKCx9uoEcJM5wL96yqdf1vZIhxsWO2EujcZmpMU238DhhjmqUIYUg0rk9sKHbNww41MrTZgSDutWDM67OiT5SyHZZ+Dw8VdamISjJgiyQGQkbfRzJNGKYZlacy10bSeWJrOgXo/c7UN/FDvP/QZJXvJX0pJbeP3JZRyyk8Az+xg1RAukuEcRot0AEy4tDDg2F9X5V/gfWtMVhceDvecc+SlnL5lkT2Kw8sc3Vcx/In270C+t6slxxAkLa24AnBVGEUNxMAtwCq1veBZE6FBlEVdoamE1yLstFI44Qma3a8pUQVvqw1tncadZQrRSkzYIdJTTK1xxJ1biyoG2VXlX51WCl+W6DDaxkNnG4WVwIBpoEkG64j5b6eB0kuIgJDMUJKAtxX8FeGo4bEjKZZY5tV81XS1e/AwNsmcDtwnT6+DQDw41AW2tQQGzH/NgCphUJbN/GQ+4H5vs4k5fCXYRBrO9wJecuoxZXU3gjI69j7w/r5iL5Nkvz5a2h8jX4AsNSGTwCsaIVGP8/ozI7KiCLlHVB956816Cit3LSW3hOP1cKUfvTY8Ibxln0Q5EUzRryOC3J3hCPAop7CC1o4U0i1wvSRkjl9k2mSV1hBo16k6mGAVd35czo6NQaopZYTnDq6aJU2HhZIzlfV7jKRNoz81imO5QRqEEETvd6xEqkG7KhA7MmZhJAOgAhD0YsZgRRy9ERQ7xbEiZVhvaRsKus6JXLlBcZVQbh60+CjVc5VLg1EX7RNQMV+T4ovnbj8g9nscB6fB8bjDa/RDJACU0ovpmOLePf/IR4EmnAf+gVDk7Iy4+8F9OLtpgzt3KvJSyDfMQupGq3upNQQW1TNcExd026Rz3JqTot/N8bRazwLJP/V4+j38L3ELi9TVzH+ppGtocisYA3SVMsm4w2Hc4INZvwzKpZhZ6Iep58Mfy9ALnQbpU9BxgUKdLTlNE4jLVoo4rHGrc9U4bMlLdXDMDIJn8S6EF7SVMwBPdcS1wOaW3eekNw7tBNaBMs6WHhlkFYN0Eb/viLgcGZCSOGbG5ChVwQUljobip5NWDWPzHitWQS5ECbDu4ETwIGPcjf3aEsLAaljCiBi7+/5Gd0zodn1XNwHfS9+UHX16oMszIFfeSPcbW9Rgdhf5GlokNOEB5EMLkCw4hllE3dU3afObdIVIFweHkDV5SxRwLlaRjO1QyEBJDOXUHGTn4pX534VkaYFhmA+Ik2y/YSzI3gxeu9IfPGMjc+QR3d6l6AqQ9xVgerOvClz9KnNCTgfDlZaI1s3BKORV9dOIvbHv82oF5mnCWjf2M2VoVCpX2/nUpWGeTHnGgFKYNLFvq/3JzttKjiKgkWKgTQ33XZASL/lthmLxRleMGFDXvEzSbUWbabUKclNubLRQl3HwYJfmZanh79CqdLtgWGaSGG1cb/HFtMyvmeORTtX26FVod7QZFfZkePUfsdE86m4GS15nCGumlA94cFDadoOWi0QWIOL/e+LFozVq7lXJJ1f/0BEIYSrqkuoowu7Kg9X+qgMyuqFDyM4cRQnoLfCsDVHBsA/pIAxXN0TQdmSpMO2tauX1YCFHfRydDyLyK2mXd2xO0Y0DoSvEq4BiPLuWz0OmkQGUqXPgyBi0HpmhB5kiGlW672kDBCUz0Yof7snYJtElOXmwp69ESobH6NwIcEJ8JkXQSg5yvVnSObGXZdVdxfvIXsgCSu66YY9PyTdj0W+fQ4vDA5dN4u2TOlCZbxEEfv6lpPOb7HKSUk62Set1nyDA+OONhJhiM1asBY3YXaYkc6+1qVcDe+Bl6sxxD4YjpHJPMIskxkxDXInxjTuNZ8COTKe/eI55HhZAoRwX5Y0us18aHziIlxy5pOaU0ns9WVGRWRFE9tEpnoy5gXdkgCWRMcgf1irSNSGdxOGYNQFp6OVZTBZIvXKN2mZlYvLm9vcq0D8ek9Tu9OJZh7Tw7Fql3MTIBpSDVo1ljwaOPe4vnwO8iCBFyqVPOjG6LpRyH3J72dRCdKO8feeKcGy9tGDN1HxLuuUHgSECVHjJdlMm4Vi+5s5tiKeAqwUnyOeI0OP5yDCri2fKflIUVaAKqfdcy/v6GnZSuPXoJ/IhDH6HDVCr36ZgwkHjk8w8617ffXfhZb8MiE4n12z5GxXGGKxQGVTWEdqV/X9Wc90nDHBkUHymTAFiazai+HWXxrFsKgcSDm1JOVQAsJNmYEf+AuW1gDBC3tLiqfL5dgb6sH4JIhUAauRpdDHn6IqejvwRxJRgjIz9oGET8Eh+pJpAe0c7BTVtncNfuu/5mq57OHf2n2pQhSVVtaXccvb/2YOiXyD6TyYkN6XSQXNK+IEiJgZyU24mUYpPJBRuYtg5aUy06dOSmQKYkcfjl35hMaASwp62RhwAOzwq4pTn5jee2sU5Z+p6y60AqdVMfDT6QS5iCH7mrZjs3FdtxFpKm7QtZB1CaLmCcjMSt6jO9jWfPVf5kQWZPQpOr2seY5r2W/QwJXla6OqURSbiXpnCQpiioh6UScH06C7npU32NTJEAgh95rNTpn5aINeM4koED1ec8NbDONKPNlpdzFKfqW2LR38CREMDrIHP8F3/m9IBcZzsdXZCqbPPwL8yl0WKBzRUw5d2dER0A+KI/J4reVOldD+iAf5m2L1VFkmI79va7DzPzckIAA+dixvfHr0tRA2VZ/IYIzcPSwUM7RIw3+tfUobXPY6MqmBxJQJSYWRU+6O/QZrou7ensBYYjkIwFv7dZEvlwiJwOatTrohsd18eOB3W59zHnxh2SofNOykXWNrvYN9OIflzTZbfkVzXfrca9uxtOHcOI9O+vaTaKRHc89UFhJeAilcipl1DMHv6iuEFpOsAgBpm7pRT2f4WYDZGIOF3j28AoAVq325ml5NClcfsdCJfu55A/tDtbxjhIob2MQinPXeHpG6MrjhVcXfXSOvttl52Wp21Sg2vkEkmy5GQ82MhVGYreSmNVQxULhqCEy9kOfnOD3NzgzhfF4np+Q24ZO2iKsDUftRjjDW3jjZ7sS5to6FtuNqeVbUGTFT9dzjcfd0g0o5dYIHvD9SQ11nMt9CEwe4ObLm9HMIp5xY98pqDXizwbWdAzKg/SolLwRXnBIsiHtoa0BhPRN6oLNNDzj5BasVSK+Jjm2OIA2CXUg4uFoc4sfv380TaHuwBEIq9tngBKQ3snfcqVoGekA/y1JvKLeybgJa7iad+Jb1rCKkDWvqeEEh5w9ACVR31lITW4lduOwVRZQr56KxeahPuEp2jQT0pnWo004zzgpeDgQpLn2qbsBfkCg+0uxgSVVtPyv0W5G5JCAGVOfgPNLlKEl06vraacBd87aDKaCE+vT7jxeaeSPEaT8WNzjH6UjpiayB+64IbZAwnsc5syCReMLkm7OYDhR42zp7FYHu1a0O/PPSjoJ8IVKEE9cKBKXBV0vGlLuBF3nZg/sCsty6nlJusWId+O08EKi64Dow1vOWrKnLxnoonRDsrhph2vGQkcLSN5I/sXalsGzh7ZAdBKjoiPhvRphb2EtRFnOKlmb7PTZRtBfRvBSXPtZ6VcaKpJtL2/o8FhVFrPtyKUXulW3nhUS8bTMbhtsPAF+MB7c9qAHjBmD4PN1Y9mQwdlVArwWcgoAtnSQuFmh0ip+xOQeYvIjiXLdQyxUvHoWNuy1Vno0ky62l9E2SrPehz9/VCXnm6VRxWgQlz6iGXIH5+1F4USwCUJlPgWkiRPGZVrIUtz7khjK7UlEt/0ewm1Pi1Od4UrjxQyjX36l+VLdadwhheOJGYE/UWd7nLpoiOX6EC0GipP/QATPlregIyo7oLzgKiVsT/lZ0129h5oCRcstOxiaHHNibijQrDu417WoSYl7Kt3AwZMLeutYo6HOgAT0vSswYIPK2zrqFMo+MTG/N9u77eWYdQthMzuh7dcZWctesfzBjtT9MJw094Vc/1kZE4pfkNdzCeITg0FcNkaZ4QSX5FgJSf5N2ddal71Y76Lr1tfBhMKUqnYpX+SzSfjoJBBqPa5vYNcwYTK/4mjV9bF9TUmA8qT38vndMg/FeA+MyH4gxHzwaQMUNvGFk6CI8h41YLTgS1vOu70/J/tKlDgXOv+2J1vLPzYxkGQe2fDGoLeLHvJqdUNmkq+dsMi2MGKd4/Yc92Fhygw/KO06GH8a4nTBO0RFQvC+MNNp2OkzeSY4NlgP9MjjWwG7whwVTHGCrSvOxeTc2odjOvU80CTDqrNMFG3ZZECqG36Pmz86+IVJ+BLO5dT7oipMhKycTEcnin3m6OCa1RqT1Q7aHAoupTdPlge9I832/fsWEEudvRMmHl3gFm1eYodatgd8VKkWi7LVACrRB9mYJluQ1rlKy4PcYjVlho0kX5NHp6k2+pQ7QjMnwemj8DH5dQfed21tkvP5w5hSvXBnSCZVA8ewN3wjU/LmUeMcwq/lPcmrnAaP9Hmv++NgsePFqb1lfBhehp0Vl1lKfAdRbfbD1c3m1T7poFTxj8IcxuPPTtnyB7rBFOlUIJmbVjrNYVSFZcF/YfFMKjnBW3gyiSKfHD7xvVpEEI38ZceeeUeZUmlng+35WYWr80NKhgR1oX527S2ldyxOPNU6In++5XEzFzhC8loulrVbMRqLy4QEmuJ1RrCarCNsXKK90ep2UrJ3PjsEr/rzf88+gMENJcH3E3wzh3kbMqcnPXkIMoExj3YrWPbn/wwxCX/Ge9xS6ZEftvjk51HsZtgowhUHw/kbo1+97DaY/ABAtY6bAC4YMI8yRtH7p4YVWTEv1ZNVeFljc6JipES19VBryKtYL2wqJmm7iGuhWbnNy3OdPWnL+KK1iZKMo76IGpr5+ZFN40/HjzRjLjSsNQMenkR478Qc/q5FKLxwS8Q/ws/setT36KOZ74ZxNuuxapJtBOIUMCu0LmMhtgw0lFlRHKs2l2U4U8ZKRdYpJmRkxkjSI6bvxsQmNlkfeyd7Y2xpk1mdvxrO1cRGuvX+HjZg==";
NSData *dataTest = [[NSData alloc] initWithBase64EncodedString:test options:kNilOptions];
NSLog(@"dataTest: %@", dataTest);
NSString *decryptTest = [CustomAESHelper decryptData:dataTest withKey:secret];
NSLog(@"decryptTest: %@", decryptTest);

那么,从JSON数据响应中获得正确的字符串有什么帮助吗?我用加密的值解析JSON时出错了吗?

您确定
subject
不为空吗?也要记录。谢谢@skaak,是的,如果你检查日志主题不为空,我就我的问题添加了一个更新,有没有建议我是否在解析数据JSON字符串值时出错?它非常密集,但根据你的测试,我怀疑AES是问题所在。它在解码的某个地方。只要看一下它就可以看出,您应该用普通的
NSArray
NSDictionary
替换可变数组和字典,但这应该不是问题。但是在那里再做一些测试。。。也可能是秘密,在你编辑的测试中,你没有展示你是如何创建的…谢谢@skaak,这个秘密工作得很好,我使用的md5方法和我的代码中显示的一样,我们没有问题,因为我们在服务器和客户端上使用相同的方法,但我会继续尝试检查JSON的解码,作为base64的字符串值可能有问题,可能会再次执行测试,但这次使用的是自定义帮助程序,而不是测试中使用的扩展
- (NSString*)md5:(NSString*)str {
    NSString *salt = @"";
    NSString *strWithSalt = [NSString stringWithFormat:@"%@%@",str,salt];
    const char *cStr = [strWithSalt UTF8String];
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    CC_MD5( cStr, (CC_LONG) strlen(cStr), result );
    return [[NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
             result[0], result[1],
             result[2], result[3],
             result[4], result[5],
             result[6], result[7],
             result[8], result[9],
             result[10], result[11],
             result[12], result[13],
             result[14], result[15]
             ] lowercaseString];
}
#import <UIKit/UIKit.h>
#import <CommonCrypto/CommonCryptor.h>

@interface CustomAESHelper : UIViewController

+ (NSString*) encryptString:(NSString*)plaintext withKey:(NSString*)key;
+ (NSString*) encryptNSMutableArray:(NSMutableArray *)mutableArray withKey:(NSString *)key;
+ (NSString*) decryptData:(NSData*)ciphertext withKey:(NSString*)key;

@end
#import "CustomAESHelper.h"
@implementation NSData (AESAdditions)
- (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];
    
    //See the doc: For block ciphers, the output size will always be less than or
    //equal to the input size plus the size of one block.
    //That's why we need to add the size of one block here
    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;
}

- (NSData *)AES256DecryptWithKey:(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];

    //See the doc: For block ciphers, the output size will always be less than or
    //equal to the input size plus the size of one block.
    //That's why we need to add the size of one block here
    size_t bufferSize = dataLength + kCCBlockSizeAES128;
    void *buffer = malloc(bufferSize);

    size_t numBytesDecrypted = 0;
    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
                                          keyPtr, kCCKeySizeAES256,
                                          NULL /* initialization vector (optional) */,
                                          [self bytes], dataLength, /* input */
                                          buffer, bufferSize, /* output */
                                          &numBytesDecrypted);

    if (cryptStatus == kCCSuccess) {
        //the returned NSData takes ownership of the buffer and will free it on deallocation
        return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
    }

    free(buffer); //free the buffer;
    return nil;
}

@end

@interface CustomAESHelper ()

@end

@implementation CustomAESHelper
+ (NSString*) encryptString:(NSString*)plaintext withKey:(NSString*)key {
     NSData *JSONData =  [[plaintext dataUsingEncoding:NSUTF8StringEncoding] AES256EncryptWithKey:key];
    
    // Get NSString from NSData object in Base64
    NSString *base64Encoded = [JSONData base64EncodedStringWithOptions:0];
//    NSLog(@"encryptString = %@",base64Encoded);
//    NSLog(@"encryptString = %@",[[NSString alloc] initWithData:JSONData
//                                                      encoding:NSUTF8StringEncoding]);
//    
//    
// NSLog(@"decryptData = %@",[self decryptData:JSONData withKey:key]);
  return base64Encoded;
    
}

+ (NSString*) encryptNSMutableArray:(NSMutableArray *)mutableArray withKey:(NSString *)key
{
    NSData *data = [[NSKeyedArchiver archivedDataWithRootObject:mutableArray]AES256EncryptWithKey:key];
   
   // Get NSString from NSData object in Base64
   NSString *base64Encoded = [data base64EncodedStringWithOptions:0];
//    NSLog(@"encryptString = %@",base64Encoded);
//    NSLog(@"encryptString = %@",[[NSString alloc] initWithData:JSONData
//                                                      encoding:NSUTF8StringEncoding]);
//
//
// NSLog(@"decryptData = %@",[self decryptData:JSONData withKey:key]);
 return base64Encoded;
}

+ (NSString*) decryptData:(NSData*)ciphertext withKey:(NSString*)key {
    
    return [[NSString alloc] initWithData:[ciphertext AES256DecryptWithKey:key]
                                  encoding:NSUTF8StringEncoding] ;
}

@end
2021-05-14 12:13:06.806259-0400 MyProjects[1609:814424] subject:WLSdQGDlb2CbBtKoK/ukbYv1HOl5ZVZo9P5VRV9426GMurhKD5o7U53MfvYaLmogJCYz32s8uz4B0HxBawlph3sgfdDieA3Lxh8D4WLLXqwY2psVasukKV1HTR9Jst1cI3O/vorvheSRvBb4JZQYotmhVPsjEkSc2xJ5ewyBCL0uv3VRWwe4qhB94Q1F/EowW5s3aH9CRlf/H9hJg1ougyX1ZL02OydMrFMXCwZSALHKLT6kCase/oHTTGyuDvs8xzLk3QSBiUO2G9ppeXmRxYB/sPAFpDI8eV2T5/O+xlIP/LLE/eyKe+wEfxWlKG1uAwiVhfrHmFMueRG7Hv6DJ/s63M2o3vziB6zfX832rQc=
2021-05-14 12:13:06.809211-0400 MyProjects[1609:814424] decrypted:(null)
2021-05-14 12:13:06.809757-0400 MyProjects[1609:814424] subject:WLSdQGDlb2CbBtKoK/ukbc1429tOxdpzEE6W/leNEoWJCIzf+R7D6u+FSu1JDXgIGiF5pgh5BJQK3yNJVYxLYsaL3kpP2yL2ALPILY6WdWBA/GJFo3s6Y0rMeEh4UBkb/yDNqbZhK2hrn3e+zvFQYG6i0+rE3rhXkTlRcRWmXB0JRTg7pTt2BtNOe+CynG3SgwowYv+R/244Ab6z/Tg+ejKs41wrKCJcBsiU5Yl18oUCeiycmQYtgRoX+yz2o5X1F/arIDi2pdCBIIS1n7sII+woRL2C0o9N5YJl3zzWnF0RwxmkSPKz7j71+sHO4OIGw+tiaKPDTfQf3K0ViQezEVHO9jAxPglkcEtMm5T1A/dWSTZQv4HjAwQ8ZjmZ5Y25Qki7oQgNStyKPxHafINj8g==
2021-05-14 12:13:06.811011-0400 MyProjects[1609:814424] decrypted:(null)
NSString *test = @"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";
NSData *dataTest = [[NSData alloc] initWithBase64EncodedString:test options:kNilOptions];
NSLog(@"dataTest: %@", dataTest);
NSString *decryptTest = [CustomAESHelper decryptData:dataTest withKey:secret];
NSLog(@"decryptTest: %@", decryptTest);
2021-05-15 20:33:05.424858-0400 MyProjects[2003:1228662] subject:WLSdQGDlb2CbBtKoK/ukbc1429tOxdpzEE6W/leNEoWJCIzf+R7D6u+FSu1JDXgIGiF5pgh5BJQK3yNJVYxLYsaL3kpP2yL2ALPILY6WdWBA/GJFo3s6Y0rMeEh4UBkb/yDNqbZhK2hrn3e+zvFQYG6i0+rE3rhXkTlRcRWmXB0JRTg7pTt2BtNOe+CynG3SgwowYv+R/244Ab6z/Tg+ejKs41wrKCJcBsiU5Yl18oUCeiycmQYtgRoX+yz2o5X1F/arIDi2pdCBIIS1n7sII+woRL2C0o9N5YJl3zzWnF0RwxmkSPKz7j71+sHO4OIGw+tiaKPDTfQf3K0ViQezEVHO9jAxPglkcEtMm5T1A/dWSTZQv4HjAwQ8ZjmZ5Y25Qki7oQgNStyKPxHafINj8g==
2021-05-15 20:33:05.425797-0400 MyProjects[2003:1228662] dataSubject: {length = 304, bytes = 0x58b49d40 60e56f60 9b06d2a8 2bfba46d ... 8a3f11da 7c8363f2 }
2021-05-15 20:33:05.425917-0400 MyProjects[2003:1228662] decryptSubject: (null)
2021-05-15 20:33:05.426105-0400 MyProjects[2003:1228662] dataTest: {length = 3904, bytes = 0xa1377af8 bf4bb7f7 1608c50f 1355efa9 ... 5c446baf 5fe1e366 }
2021-05-15 20:33:05.426219-0400 MyProjects[2003:1228662] decryptTest: [{"position":0,"shortName":"Dan","class":"Stakeholder","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Stakeholder\/p2","project":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","rank":2,"projects":["x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1"]},{"position":0,"shortName":"Mark","class":"Stakeholder","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Stakeholder\/p1","project":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","rank":1,"projects":["x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1"]},{"position":0,"project":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Implication\/p2","class":"Implication","name":"aes256 decrypt","onLeft":0},{"position":0,"project":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Implication\/p1","class":"Implication","name":"aes256 encrypt","onLeft":1},{"position":0,"project":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Experience\/p2","class":"Experience","name":"Trying test all options","onLeft":0},{"position":0,"project":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Experience\/p1","class":"Experience","name":"Test Dan code","onLeft":1},{"position":0,"task":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Task\/p2","class":"Resource","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Resource\/p2","project":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","longDescription":"","type":"task","name":"Check StackOverflow"},{"resourceCollapsed":1,"position":0,"project":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","dueDate":"","completed":"","type":"task","completedDate":"","resources":["x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Resource\/p2"],"longDescription":"","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Task\/p2","class":"Task","name":"Test new libraries","calendarReference":""},{"position":1,"task":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Task\/p1","class":"Resource","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Resource\/p1","project":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","longDescription":"","type":"barrier","name":"Still trying fixing ASAP"},{"resourceCollapsed":1,"position":1,"project":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","dueDate":"","completed":"","type":"barrier","completedDate":"","resources":["x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Resource\/p1"],"longDescription":"","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Task\/p1","class":"Task","name":"Without success until yet","calendarReference":""},{"tasks":["x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Task\/p2","x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Task\/p1"],"intentions":"Test AES 256 with help of DAN","resources":["x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Resource\/p2","x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Resource\/p1"],"class":"Project","objectId":"x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Project\/p1","implications":["x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Experience\/p2","x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Experience\/p1"],"stakeholders":["x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Stakeholder\/p2","x-coredata:\/\/6ABAC2F1-A324-4CA6-8966-D410039C7626\/Stakeholder\/p1"],"date":"2021-05-14 22:16:26 +0000","name":"Test 3 AES 256","objective":"Test 3"}]