我有一个问题好几天了,不知道怎么解决。我正在制作一个应用程序,它通过pythontornaweb向服务器发送NSDictionary。好吧,我发送的数据用AES256加密,问题是解密。在
Objective-C加密代码(key=“0123456789abcdef”)
// Copy the key data, padding with zeroes if needed
char key[kKeySize];
bzero(key, sizeof(key));
memcpy(key, keyData, keyLength > kKeySize ? kKeySize : keyLength);
size_t bufferSize = [self length] + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t dataUsed;
CCCryptorStatus status = CCCrypt(decrypt ? kCCDecrypt : kCCEncrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
key, kKeySize,
NULL,
[self bytes], [self length],
buffer, bufferSize,
&dataUsed);
switch(status){
case kCCSuccess:
return [NSData dataWithBytesNoCopy:buffer length:dataUsed];
case kCCParamError:
NSLog(@"Error: NSDataAES256: Could not %s data: Param error", decrypt ? "decrypt" : "encrypt");
break;
case kCCBufferTooSmall:
NSLog(@"Error: NSDataAES256: Could not %s data: Buffer too small", decrypt ? "decrypt" : "encrypt");
break;
case kCCMemoryFailure:
NSLog(@"Error: NSDataAES256: Could not %s data: Memory failure", decrypt ? "decrypt" : "encrypt");
break;
case kCCAlignmentError:
NSLog(@"Error: NSDataAES256: Could not %s data: Alignment error", decrypt ? "decrypt" : "encrypt");
break;
case kCCDecodeError:
NSLog(@"Error: NSDataAES256: Could not %s data: Decode error", decrypt ? "decrypt" : "encrypt");
break;
case kCCUnimplemented:
NSLog(@"Error: NSDataAES256: Could not %s data: Unimplemented", decrypt ? "decrypt" : "encrypt");
break;
default:
NSLog(@"Error: NSDataAES256: Could not %s data: Unknown error", decrypt ? "decrypt" : "encrypt");
}
free(buffer);
把加密的数据发送到服务器并执行以下操作
^{pr2}$结果是:
-------------------------解密前--------------------------------
布??c??? ?????d?第页??我呢?G?'??在
-------------------------解密后--------------------------------
是吗?Ƒg,??是吗??? ?(?&97R??? ?? 在
如您所见,被错误地解密。如果你发送未加密的,一切都会完美。在
有什么想法吗?在
我将检查以确保Objective-C和Python之间的编码是相同的。当我把它转换成十六进制的格式时,我就不会再把它转换成十六进制的格式了。在
顺便问一下,您使用的Python版本是什么?(3.0+及以上版本使用unicode)
相关问题 更多 >
编程相关推荐