Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从PHP解密Objective-C中的AES128/CBC_Ios_Objective C_Encryption_Aes - Fatal编程技术网

Ios 从PHP解密Objective-C中的AES128/CBC

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

我不熟悉xCode和Objective-C。我已经编码了一个QR扫描仪,现在我需要解密使用AES128 CBC加密的数据。我在php中使用以下代码段加密明文:

你能帮我吗?对不起,我英语不好,我是德国人:D

使用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;
}
另请参阅以获取完整的实现。

使用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提供的加密代码。他们发布了最可怕的不安全代码,由于大量安卓开发人员在他们的一生中没有看到过任何加密,因此获得了无限的关注和投票。这只是另一个例子。代码中没有重要数据,但不是每个人都必须在第一眼看到它背后的内容。很好,当解密失败时再次与您交谈。