Создание шифрования AES в Swift, похожего на AndroidAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Создание шифрования AES в Swift, похожего на Android

Сообщение Anonymous »

Шифрование пароля, сгенерированного в приложении Android и серверной части Java, одинаково, однако в iOS я пробовал использовать CryptoSwift и CommonCrypto, а также другой доступный код, но не получил желаемого результата, совпадающего с двумя другими, и, следовательно, разместил вопрос. Пожалуйста, дайте мне знать, что в iOS есть аналогичный код/класс счетчика для генерации такого же вывода, или дайте мне знать, чего не хватает в моем коде. Заранее спасибо.
Вот код Android

Код: Выделить всё

    private static byte[] salt = { 1, 2, 3, 4, 5, 6, 7, 8 };
private static final Integer ITERATRION_COUNT = 65536;
private  static final Integer KEY_LENGTH = 256;

public static String encrypt(String strToEncrypt, String password) throws Exception {

String encryptedText = null;
try {
SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
KeySpec spec = new PBEKeySpec(password.toCharArray(), salt, ITERATRION_COUNT, KEY_LENGTH);
SecretKey tmp = factory.generateSecret(spec);
SecretKeySpec secretKey = new SecretKeySpec(tmp.getEncoded(), "AES");

Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
encryptedText= Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
}
}catch (Exception e) {
e.printStackTrace();
return null;
}
return encryptedText;
}
Я также воспользовался помощью ChatGPT, но зашифрованная строка, преобразованная в код, совпадает только наполовину.
Код iOS –
func encryptString (strToEncrypt: String, пароль: String) -> String? {

Код: Выделить всё

   let salt: [UInt8] = [1, 2, 3, 4, 5, 6, 7, 8]

let saltData = Data(salt)

let passwordData = password.data(using: .utf8)!

// Key derivation using PBKDF2

var key = Data(repeating: 0, count: kCCKeySizeAES256)

let keyLength = key.count

let keyDerivationResult = key.withUnsafeMutableBytes { keyBytes in

saltData.withUnsafeBytes { saltBytes in

CCKeyDerivationPBKDF(

CCPBKDFAlgorithm(kCCPBKDF2),

password, passwordData.count,

saltBytes.baseAddress!.assumingMemoryBound(to: UInt8.self), saltData.count,

CCPseudoRandomAlgorithm(kCCPRFHmacAlgSHA256),

65536, // rounds

keyBytes.baseAddress!.assumingMemoryBound(to: UInt8.self), keyLength)

}

}

guard keyDerivationResult == kCCSuccess else { return nil }

// Encryption

guard let dataToEncrypt = strToEncrypt.data(using: .utf8) else { return nil }

let algorithm = CCAlgorithm(kCCAlgorithmAES)

let options = CCOptions(kCCOptionPKCS7Padding)

var numBytesEncrypted = 0

var encryptedData = Data(count: dataToEncrypt.count + kCCBlockSizeAES128)

let encryptedDataLength = encryptedData.count

let cryptStatus = encryptedData.withUnsafeMutableBytes { encryptedBytes in

dataToEncrypt.withUnsafeBytes { dataToEncryptBytes in

key.withUnsafeBytes { keyBytes in

CCCrypt(CCOperation(kCCEncrypt), algorithm, options,

keyBytes.baseAddress, key.count, nil,

dataToEncryptBytes.baseAddress, dataToEncrypt.count,

encryptedBytes.baseAddress, encryptedDataLength,

&numBytesEncrypted)

}

}

}

guard cryptStatus == kCCSuccess else { return nil }

encryptedData.removeSubrange(numBytesEncrypted..

Подробнее здесь: [url]https://stackoverflow.com/questions/78162629/making-aes-encryption-in-swift-similar-to-android[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Создание шифрования AES в Swift, похожего на Android
    Anonymous » » в форуме IOS
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • От индивидуального похожего списка к проблеме кластерного похожего списка
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • От индивидуального похожего списка к проблеме кластерного похожего списка
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Создание печатного представления объекта, похожего на __repr__ в Python
    Гость » » в форуме C++
    0 Ответы
    33 Просмотры
    Последнее сообщение Гость
  • Создание собственного диалогового окна, похожего на системное диалоговое окно Windows.
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»