Код Swift
Преобразование кода ActionScript в Swift может выглядеть следующим образом:
func encrypt(text: String, salt: String) -> String? {
let key = Array(salt.utf8)
let bytes = Array(text.utf8)
let cryptor = Cryptor(operation: .encrypt, algorithm: .des, options: [.ECBMode, .PKCS7Padding], key: key, iv:[UInt8]())
if let encrypted = cryptor.update(byteArray: bytes)?.final() {
return Data(encrypted).base64EncodedString()
}
return nil
}
func decrypt(text: String, salt: String) -> String? {
let key = Array(salt.utf8)
let bytes = [UInt8](Data(base64Encoded: text)!)
let cryptor = Cryptor(operation: .decrypt, algorithm: .des, options: [.ECBMode, .PKCS7Padding], key: key, iv:[UInt8]())
if let decrypted = cryptor.update(byteArray: bytes)?.final() {
return String(bytes: decrypted, encoding: .utf8)
}
return nil
}
Быстрый тест
В комментариях, которые вы использовали в качестве тестового примера, с текстом dimusco@yopmail.com и солью: 123456 .Это будет называться так:
let salt = "123456"
if let encrypted = self.encrypt(text: "dimusco@yopmail.com", salt: salt) {
print ("encrypted: " + encrypted)
if let decrypted = self.decrypt(text: encrypted, salt: salt) {
print ("decrypted: " + decrypted)
}
}
Правильный вывод будет:
encrypted: +rptz3Ss8zh2j0VXN7CICsi2jkzYoAPx
decrypted: dimusco@yopmail.com
Я не знаю, где вы получили свой результат eLnJvMUKApg = от, но это неправильно.Кроме того, код ActionScript, который вы цитируете в своем вопросе, даст результат + rptz3Ss8zh2j0VXN7CICsi2jkzYoAPx .
Сравнить с ActionScript
Flex
Вы можете скачать бесплатный Flex SDK здесь:
https://download.macromedia.com/pub/flex/sdk/flex_sdk_4.6.zip
as3crypto Library
Кажется, что цитируется ActionScriptиспользовать библиотеку as3crypto, которую можно скачать отсюда:
https://code.google.com/archive/p/as3crypto/
Flex зависит от установленной среды Java.Кажется, он не работает с последней версией Java из коробки, но вы можете использовать Java 1.6, например.
Вы можете создать небольшую программу ActionScript, которая вызывает подпрограммы as3crypto.Если файл называется, например, Main.as, его можно скомпилировать с помощью следующей команды:
flex_sdk_4.6/bin/mxmlc Main.as
В результате получается файл Main.swf, который можно выполнить с помощью плагина Flash в браузере.
Результат
Результат кода ActionScript такой же, как и код Swift, см. Здесь этот снимок экрана:
