Ios 从PHP解密Objective-C中的AES128/CBC
我不熟悉xCode和Objective-C。我已经编码了一个QR扫描仪,现在我需要解密使用AES128 CBC加密的数据。我在php中使用以下代码段加密明文: 你能帮我吗?对不起,我英语不好,我是德国人:D使用CommonCrypto,请参阅和 以下是让您开始的小技巧:Ios 从PHP解密Objective-C中的AES128/CBC,ios,objective-c,encryption,aes,Ios,Objective C,Encryption,Aes,我不熟悉xCode和Objective-C。我已经编码了一个QR扫描仪,现在我需要解密使用AES128 CBC加密的数据。我在php中使用以下代码段加密明文: 你能帮我吗?对不起,我英语不好,我是德国人:D使用CommonCrypto,请参阅和 以下是让您开始的小技巧: + (NSData *)doCipher:(NSData *)dataIn iv:(NSData *)iv key:(NSData *)symmetricKe
+ (NSData *)doCipher:(NSData *)dataIn
iv:(NSData *)iv
key:(NSData *)symmetricKey
context:(CCOperation)encryptOrDecrypt
error:(NSError **)error
{
CCCryptorStatus ccStatus = kCCSuccess;
size_t cryptBytes = 0; // Number of bytes moved to buffer.
NSMutableData *dataOut = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128];
ccStatus = CCCrypt( encryptOrDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
symmetricKey.bytes,
kCCKeySizeAES128,
iv.bytes,
dataIn.bytes,
dataIn.length,
dataOut.mutableBytes,
dataOut.length,
&cryptBytes);
if (ccStatus == kCCSuccess) {
dataOut.length = cryptBytes;
}
else {
if (error) {
*error = [NSError errorWithDomain:@"kEncryptionError"
code:ccStatus
userInfo:nil];
}
dataOut = nil;
}
return dataOut;
}
另请参阅以获取完整的实现。使用CommonCrypto,请参阅和
以下是让您开始的小技巧:
+ (NSData *)doCipher:(NSData *)dataIn
iv:(NSData *)iv
key:(NSData *)symmetricKey
context:(CCOperation)encryptOrDecrypt
error:(NSError **)error
{
CCCryptorStatus ccStatus = kCCSuccess;
size_t cryptBytes = 0; // Number of bytes moved to buffer.
NSMutableData *dataOut = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128];
ccStatus = CCCrypt( encryptOrDecrypt,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
symmetricKey.bytes,
kCCKeySizeAES128,
iv.bytes,
dataIn.bytes,
dataIn.length,
dataOut.mutableBytes,
dataOut.length,
&cryptBytes);
if (ccStatus == kCCSuccess) {
dataOut.length = cryptBytes;
}
else {
if (error) {
*error = [NSError errorWithDomain:@"kEncryptionError"
code:ccStatus
userInfo:nil];
}
dataOut = nil;
}
return dataOut;
}
另请参阅完整的实现。谢谢您的帮助,我如何调用此方法?NSData*已解密=[doCipher….]?抱歉,我是一个绝对的新手:/n您必须在安全框架中包含#import,像
[ClassName doCipher…]一样调用它代码>其中ClassName是声明它的类的名称。真的要考虑rnCultor,它是一个编译实现,我所提供的是一个在Objtovi-C和CuffTo中精通的片段。谢谢,它工作得很好:我忘记把QR数据从十六进制字符串转换成NStDATA…谢谢!:)谢谢你的帮助,我怎么称呼这个方法?NSData*已解密=[doCipher….]?抱歉,我是一个绝对的新手:/n您必须在安全框架中包含#import,像[ClassName doCipher…]一样调用它代码>其中ClassName是声明它的类的名称。真的要考虑rnCultor,它是一个编译实现,我所提供的是一个在Objtovi-C和CuffTo中精通的片段。谢谢,它工作得很好:我忘记把QR数据从十六进制字符串转换成NStDATA…谢谢!:)永远不要相信来自AndroidStippets的密码。他们发布了最可怕的不安全代码,由于大量安卓开发人员在他们的一生中没有看到过任何加密,因此获得了无限的关注和投票。这只是另一个例子。代码中没有重要数据,但不是每个人都必须在第一眼看到它背后的内容。很好,解密失败后再与您交谈。永远不要信任AndroidStippets提供的加密代码。他们发布了最可怕的不安全代码,由于大量安卓开发人员在他们的一生中没有看到过任何加密,因此获得了无限的关注和投票。这只是另一个例子。代码中没有重要数据,但不是每个人都必须在第一眼看到它背后的内容。很好,当解密失败时再次与您交谈。