Я не уверен, что не так с моим кодом узла Node. На выходе из Node JS не хватает символов, чем выход в iOS Swift.iOS Swift vs Node JS Crypto Различные выходы
My Node JS код:
var crypto = require('crypto');
var CRYPTO_ALGORITHM = "aes-256-ctr";
var CRYPTO_PASSWORD = "3zTvzr3p67VC61jmV54rIYu1545x4TlY";
var CRYPTO_IV = "";
var string_data = "OLIVER MARTINEZ OLIVER";
var cipher = crypto.createCipheriv(CRYPTO_ALGORITHM, CRYPTO_PASSWORD, CRYPTO_IV);
var encrypted = cipher.update(string_data, "utf8", "hex");
encrypted += cipher.final("hex"); // to hex
console.log("encrypted final: " + encrypted);
// --------------------------------------------------------------- //
var encrypted_string = encrypted;
var decipher = crypto.createDecipheriv(CRYPTO_ALGORITHM, CRYPTO_PASSWORD, CRYPTO_IV);
var decrypted = decipher.update(encrypted_string, "hex", "utf8");
decrypted += decipher.final("utf8"); // to utf8
console.log("decrypted final: " + decrypted);
УЗЕЛ ВЫВОД: 3df3cfd9adef86489fd27629d75f3fcbb744e5bae846
Мой IOS Код Swift:
let CRYPTO_IV = "";
let CRYPTO_PASSWORD = "3zTvzr3p67VC61jmV54rIYu1545x4TlY";
let data = "OLIVER MARTINEZ OLIVER";
let encrypted = try! data.encrypt(AES(key: CRYPTO_PASSWORD, iv: CRYPTO_IV, blockMode: .CTR)).toHexString();
print("encrypted: \(encrypted)");
IOS СВИФТ ВЫВОД: 3df3cfd9adef86489fd27629d75f3fcbb744e5bae846bde7df9e98571ba27f01
Как вы можете видеть. Выход очень похож. Только на выходе NodeJS отсутствуют некоторые символы.
Пожалуйста, обратите внимание, что 'NoPadding()' ** не может ** называться вне модуля 'CryptoSwift' в настоящее время (из-за отсутствия общественного инициализаторе' NoPadding'). Я открыл запрос [pull request] (https://github.com/krzyzanowskim/CryptoSwift/pull/254), и он слит в ветку 'develop' и будет выпущен в ближайшем будущем (надеюсь). –
Большое спасибо Artjom .. У меня также была ошибка при использовании NoPadidng() .. Я рад, что это не только я, и это скоро будет разрешено. Большое спасибо, сэр. Действительно полезно – nemoryoliver