2016-10-27 4 views
1

Я получаю CCCryptorStatus как kCCSuccess.
Это означает, что шифрование выполнено успешно.
Однако я хочу получить зашифрованные данные, как их получить?

Любая помощь будет оценена по достоинству.Как получить данные о возврате CCCrypt iOS?

Спасибо,
Пуджа Rathod

ответ

1

Всмотритесь на аргументы CCCrypt:

CCCryptorStatus CCCrypt(CCOperation op, 
    CCAlgorithm alg, 
    CCOptions options, 
    const void *key, 
    size_t keyLength, 
    const void *iv, 
    const void *dataIn, 
    size_t dataInLength, 
    void *dataOut, 
    size_t dataOutAvailable, 
    size_t *dataOutMoved); 

(Это из старого man page, которая использует типы C.)

С в последних трех аргументах вы должны указать:

  • байтовый буфер, в котором функция записывает зашифрованные данные
  • общая (доступная) длина буфера
  • и место, где функция может записывать количество записанных байтов.

В Objective-C, вы можете использовать NSMutableData для обеспечения необходимого буфера (код примера взят из here):

CCCryptorStatus ccStatus = kCCSuccess; 
size_t   cryptBytes = 0; 
NSMutableData *dataOut = [NSMutableData dataWithLength:dataIn.length + kCCBlockSizeAES128]; 

ccStatus = CCCrypt(encryptOrDecrypt, // kCCEncrypt or kCCDecrypt 
        kCCAlgorithmAES128, 
        kCCOptionPKCS7Padding, 
        key.bytes, 
        kCCKeySizeAES128, 
        iv.bytes, 
        dataIn.bytes, 
        dataIn.length, 
        dataOut.mutableBytes, 
        dataOut.length, 
        &cryptBytes); 

dataOut.length = cryptBytes; 
+0

да я получил это спасибо, но теперь у меня есть проблемы с прохождением зашифрованные данные в php web api, так как в php невозможно дешифровать данные с помощью NSDATA, так как я могу преобразовать этот зашифрованный NSDATA в байты или строку. – puja

+0

Если ваш PHP API поддерживает его, вы можете напрямую установить зашифрованные необработанные данные в качестве тела запроса HTTP. Если это не так, вам придется обсудить с владельцем, что они ожидают. Вы можете, например, кодировать данные в строку base64 с помощью соответствующих методов NSData, а затем преобразовать обратно в кодированные данные UTF-8 и использовать их. – vzsg

Смежные вопросы