0

サーバーから送信されたメッセージを解読しようとしています。

サーバー側と Android クライアント側の両方で、 https ://gist.github.com/jafetsanchez/1080133 の暗号化コードを使用しています。

  • サーバーは CS コードを使用してメッセージを暗号化します。
  • Android クライアントは Java コードを使用してメッセージを復号化します

Swift を使用して iPhone クライアント アプリに復号化機能を追加したいと考えています。ただし、iOS ツールでそれを行う方法がわかりません。

私はCryptoSwiftを使用しています

これが私がやろうとしたことです:

    let iVector: [UInt8] = [
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    ]
    
   let encryptedMessage = "encrypted_message_encrypted_message_encrypted_message_encrypted_message_"
    
    let password = "passwordpassword"

    
    do {
        let aes = try AES(key: password, iv: String(bytes: iVector, encoding: .utf8)!, padding: .pkcs7) // aes128
        let decryptedText = try aes.decrypt(encryptedMessage.bytes)
        let data = Data(bytes: decryptedText, count: decryptedText.count)

        if let string = String(data: data, encoding: .utf8) {
            
            print(string)
        } else {
            
            print("not a valid UTF-8 sequence")
        }
    } catch { }

現在、エラーが発生しています:CryptoSwift.AES.Error.dataPaddingRequired

さらに、そこに MD5 ハッシュを組み合わせる方法がわかりません。

4

2 に答える 2

0

あなたは線に沿って何かをする必要があります:

let password = "passwordpassword".bytes.md5()
let aes = try AES(key: password, blockMode: CBC(iv: iVector), padding: .pkcs7)

データを扱うときは、文字列、バイト、または Base64 のいずれであっても、データの形式に注意して従うことをお勧めします。

于 2020-09-01T17:03:48.223 に答える