PKCS5Padding против PKCS7Padding Совместимость Android iOS

Я создаю версию приложения для Android и iOS, и у меня есть часть данных, которая должна быть зашифрована. Я использую библиотеки JNCryptor/RNCryptor для Android и iOS соответственно, потому что они заявлены как совместимые.

Однако, когда я шифрую с помощью Android, мой зашифрованный ключ имеет длину 114 символов, тогда как в iOS он имеет длину 112 символов. Единственное различие, которое я заметил между двумя исходными кодами библиотеки, состоит в том, что Android использует PKCS5Padding, тогда как iOS использует PKCS7Padding. Это важно, учитывая, что две библиотеки, по-видимому, должны быть совместимыми? Если так, как мне изменить это, чтобы сделать две зашифрованные строки равной длины?

РЕДАКТИРОВАТЬ: Android-код:

    JNCryptor cryptor = new AES256JNCryptor();
    byte[] plaintext = data.getBytes();
    String password = key;
    String a;
    try {
        byte[] ciphertext = cryptor.encryptData(plaintext, password.toCharArray());

        a = Base64.encodeToString(ciphertext, Base64.DEFAULT);

       return a;


    } catch (CryptorException e) {
        // Something went wrong
        e.printStackTrace();

        return "0";
    }

Код iOS:

NSData *data = [@"mystring" dataUsingEncoding:NSUTF8StringEncoding];



NSError *error;

NSData *encryptedData = [RNEncryptor encryptData:data

                                    withSettings:kRNCryptorAES256Settings

                                        password:DEV_AES_KEY

                                           error:&error];



NSString *myotherstring = [encryptedData base64EncodedStringWithOptions:0];

Или вы хотели сравнить две библиотеки? Они доступны здесь: https://github.com/RNCryptor/JNCryptor

0 ответов

Другие вопросы по тегам