2017-01-10 6 views
1

Я просто новичок в RNCryptor, но мне была предоставлена ​​образецная строка, зашифрованная и закодированная base64. Я пытаюсь использовать функцию расшифровки RNCryptor для просмотра строки в виде обычного текста.Расшифровать закодированную base64 и зашифрованную строку aes с использованием RNCryptor

Я попытался следующие:

func decryptStr(_ sample : String){ 

    let sampleBase64Decoded = sample.fromBase64Data() 

    do { 
     let decryptedNSData = try RNCryptor.decrypt(data: sampleBase64Decoded!, withPassword: "secretPass") 
     let decryptedNSString = NSString(data: decryptedNSData, encoding: String.Encoding.utf8.rawValue) 
     print("decrypted : \(decryptedNSString)") 
    } 
    catch let error as NSError { 
     print("issue decrypting :\(error.localizedDescription)") 
    } 

} 

и я называю это так:

decryptStr("R79gQDNTt/0+cjU7pduqfA==") 

и fromBase64 выглядит так:

extension String { 

func fromBase64() -> String? { 
    guard let data = Data(base64Encoded: self, options: NSData.Base64DecodingOptions(rawValue: 0)) else { 
     return nil 
    } 

    return String(data: data, encoding: String.Encoding.utf8)! 
} 

} 

Я получаю ошибку connect.RNCryptor.Error error 2. Почему это должно быть? Разве это никак не связано с тем, что строка кодируется как base 64, так и зашифрована?

Правильный пароль.

+2

Как было сделано шифрование? Обратите внимание, что RNCryptor имеет собственный формат, он предназначен для взаимодействия с данными, зашифрованными RNCryptor. – zaph

ответ

3

Данные Base-64 (R79gQDNTt/0+cjU7pduqfA==) не являются сообщением RNCryptor (первый байт неверен, и он слишком короткий).

Нет стандартного формата для шифрования AES. Вы должны сопоставить дешифратор с шифром. RNCryptor реализует конкретный формат, который реализует важные преимущества безопасности, отсутствующие в большинстве решений ad hoc. Если эти данные поступают с сервера, вам также необходимо использовать реализацию RNCryptor или переписать код Swift для реализации любого формата, используемого вашим сервером (это выглядит как специальный пользовательский формат, поэтому я не могу сказать как это реализовать).

+0

Я скоро свяжусь с парнем сервера и спрошу, использовал ли он RNCryptor. Похоже, у него не было! – user2363025

+0

Чтобы уточнить, зашифрована ли строка с помощью RNCryptor PHP, я смогу ее расшифровать с помощью RNCryptor swift? – user2363025

+0

Исправить; RNCryptor - это формат. Существуют реализации около десятка языков. –