我写了一些字符串加密的的代码,我把字符串转成nadata类型然后用AES256ParmEncryptWithKey进行加密处理,但当我对加密后的data转成nsstring时返回的却是nil NSString *testStr = @"TEST"; NSData *strData = [testStr dataUsingEncoding:NSUTF8StringEncoding]; NSData *encryptStrData = [strData AES256ParmEncryptWithKey:@"this is a test"]; NSString *decryptStr = [[NSString alloc]initWithData:encryptStrData encoding:NSUTF16StringEncoding]; NSLog(@"%@",decryptStr); 下面是数据加密处理: - (NSData *)AES256ParmEncryptWithKey:(NSString *)key //加密 { char keyPtr[kCCKeySizeAES256+1]; bzero(keyPtr, sizeof(keyPtr)); [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 | kCCOptionECBMode, keyPtr, kCCBlockSizeAES128, NULL, [self bytes], dataLength, buffer, bufferSize, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted]; } free(buffer); return nil; } |
|
NSString *decryptStr = [[NSString alloc]initWithData:encryptStrData encoding:NSUTF16StringEncoding];这个编码是NSUTF8StringEncoding,我写错了。
|
|
下面是测试结果图片是结果
decryptStr?为nil 路过的大神帮忙看下 谢谢 |
|
20分 |
我用的des加密,楼主要demo,可以留下邮箱
|
30分 |
加密之后最好来个base64,加密后的数据中会可能出现””\0″”。
|
2218103847@qq.com 谢谢! |
|
换了其他方式,有时间会试下,谢谢。 |
|
请问楼主解决了没?解决了 给我说一下具体过程,我和你一样的问题
|