【问题标题】:Buffer too small of SecKeyWrapper, how to solve it?SecKeyWrapper 的缓冲区太小,如何解决?
【发布时间】:2011-08-02 21:48:05
【问题描述】:

查看我的代码:

  NSString *requestString = @"I am an encrypted piece of dataaaaaaaaaaaaaaaaaaaa";
NSData *xmlDaCriptare1 = [NSData dataWithBytes:[requestString UTF8String] length:[requestString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];


xmlDaCriptare1 = [requestString dataUsingEncoding:NSUTF8StringEncoding];

NSString *strcheck = [[NSString alloc] initWithData:xmlDaCriptare1 encoding:NSUTF8StringEncoding];

NSLog(@"%@", strcheck);

char *keya = "a16byteslongkey!";

NSData * symmetricKey = [NSData dataWithBytes:keya length:16];      
CCOptions pad = kCCOptionECBMode;  
NSData *xmlCriptato = [[SecKeyWrapper sharedWrapper] doCipher:xmlDaCriptare1  
                                                key:symmetricKey  
                                            context:kCCEncrypt 
                                            padding:&pad];  

它总是返回:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Problem with encipherment ccStatus == -4301'

那是“缓冲区太小”。有谁知道如何解决它? 谢谢, 奥蕾莉亚

【问题讨论】:

    标签: iphone objective-c security aes


    【解决方案1】:

    我不确定你想做什么,你有

    NSData *xmlDaCriptare1 = [NSData dataWithBytes:[requestString UTF8String] length:[requestString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];
    

    但是这样做会在您的 NSData 中重新创建完全相同的字节

    xmlDaCriptare1 = [requestString dataUsingEncoding:NSUTF8StringEncoding];
    

    你的 strcheck 来自

    NSString *strcheck = [[NSString alloc] initWithData:xmlDaCriptare1 encoding:NSUTF8StringEncoding];
    

    永远不会被释放,

    我假设您使用的是来自 Apple CryptoExercise 的演示示例中的 SecKeyWrapper,因此您可能在代码中发现了一个错误(这毕竟只是一个演示程序),我建议您找出 SecKeyWrapper 失败的地方,如果您仍然无法确定问题所在,请发布该部分代码。

    【讨论】:

    • 谢谢你。我试图查看代码但没有成功。方法是 - (NSData *)doCipher:(NSData *)plainText key:(NSData *)symmetricKey context:(CCOperation)encryptOrDecrypt padding:(CCOptions *)pkcs7 {
    猜你喜欢
    • 2013-01-13
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多