Я пытался использовать три разные библиотеки для AES-шифрования строки.
Когда я использую инструмент , найденный здесь , я получаю следующие результаты:
Input: "Test"
key: "MyEncryptionKey1MyEncryptionKey1" (256 Bit)
ECB mode.
это дает мне вывод Cidor8Ph7pZqPw0x2AwIKw==
Но когда я использую библиотеки в Swift, я получаю разные результаты.
Использование RNCryptor
Когда я использую RNcryptorЯ использую следующий код:
class func encryptMessage(message: String) throws -> String {
guard let messageData = message.data(using: .utf8) else { return message }
let cipherData = RNCryptor.encrypt(data: messageData, withPassword: key)
return cipherData.base64EncodedString()
}
вывод: AwF8a+HziYkO4iHdcI3jY8p9QAY461DVgkjkYUFMkuh4A2a8FCfa4RgS9Z37QhJGxIL0Q20RE3BL4nmLQVFOfZmBpj8l0wj9YZgqZmrkxRFYQQ==
Использование AESCrypt
Когда я использую RNcryptor i 'используя следующий код:
class func encryptMessageAES(message: String) -> String{
guard let encryptedData = AESCrypt.encrypt(message, password: key) else { return message }
return encryptedData
}
Вывод: T5/mR8UT/EXeUobPTLhcFA==
Также, если я использую CryptoSwift
, я получаю третий результат.Мой коллега, работающий с Android, всегда получает один и тот же результат - соответствует веб-инструменту.
Я совершенно новичок в шифровании и вижу, что делаю что-то не так.Но я не могу понять, что.Я должен также упомянуть, что это шифрование используется только для того, чтобы не иметь сообщений чата в необработанных строках, отображаемых в Firebase, для тех, кто имеет доступ к базе данных.