nsdata加密后转化为nsstring为nil

iOS 码拜 7年前 (2015-05-02) 1465次浏览 0个评论

我写了一些字符串加密的的代码,我把字符串转成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;
}

nsdata加密后转化为nsstring为nil

nsdata加密后转化为nsstring为nil
NSString *decryptStr = [[NSString alloc]initWithData:encryptStrData encoding:NSUTF16StringEncoding];这个编码是NSUTF8StringEncoding,我写错了。
nsdata加密后转化为nsstring为nil
下面是测试结果图片是结果
decryptStr?为nil  路过的大神帮忙看下  谢谢
nsdata加密后转化为nsstring为nil
20分
我用的des加密,楼主要demo,可以留下邮箱
nsdata加密后转化为nsstring为nil
30分
加密之后最好来个base64,加密后的数据中会可能出现””\0″”。
nsdata加密后转化为nsstring为nil
引用 3 楼 zhangbingcox 的回复:

我用的des加密,楼主要demo,可以留下邮箱

2218103847@qq.com 谢谢!

nsdata加密后转化为nsstring为nil
引用 4 楼 hslinux 的回复:

加密之后最好来个base64,加密后的数据中会可能出现””\0″”。

换了其他方式,有时间会试下,谢谢。

nsdata加密后转化为nsstring为nil
请问楼主解决了没?解决了 给我说一下具体过程,我和你一样的问题

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明nsdata加密后转化为nsstring为nil
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!