Шифрование и дешифрование не дает одинаковый текст с использованием AES / ECB / NoPadding

String plain1= "Test";
byte[] cipher = SplashSecure.getInstance().encrypt2(plain1);
String plain2 = SplashSecure.getInstance().decrypt2(cipher);

обычный = тест

После расшифровкиplainText2 должно быть равноplaintext.Но его нет.

Методы шифрования / дешифрования.

 public void initKey(String key) {
    String paddedKey = Utils.padString(key);
    mKeyspec = new SecretKeySpec(Utils.getBytes(paddedKey), "AES/ECB/NoPadding");
                   // Utils.getBytes returns "paddedKey.getBytes("CP1252")"
 }

public byte[] encrypt2(String data) {
    try {
        Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
        cipher.init(Cipher.ENCRYPT_MODE, mKeyspec);
        String paddedData = Utils.padString(data);
        return cipher.doFinal(Utils.getBytes(paddedData));

    } catch(InvalidKeyException e) {
        e.printStackTrace();
    // Series of catch blocks
    }
    return null;
}

public String decrypt2(byte[] cypherText) {
    try {
        Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
        cipher.init(Cipher.DECRYPT_MODE, mKeyspec);
        byte[] plainTextBytes = cipher.doFinal(cypherText);
        return Utils.getString(plainTextBytes);
        // Utils.getString returns "new String(bytes, "CP1252");"
    } catch(InvalidKeyException e) {
        // Series of catch blocks.
    } 
    return null;
}

Редактировать:

public static String padString(String source) {
    char paddingChar = '\0';
    int size = 16;
    int padLength = size - source.length() % size;

    for (int i = 0; i < padLength; i++) {
        source += paddingChar;
    }

    return source;
}

Редактировать:

Я пытаюсь заставить шифрование-дешифрование работать через Windows (другой клиент, который шифрует и сервер) и Android. Windows-клиент - это приложение VC ++, которое использует класс Rijndael (http://svn.openfoundry.org/pcman/2007.06.03/Lite/Rijndael.h) и Android используетhttp://www.cs.ucdavis.edu/~rogaway/ocb/ocb-java/Rijndael.java Клиент Windows зашифровал данные и сохранил их на сервере. Мне нужно построить клиент для Android, который получает зашифрованные данные, расшифровывает их и отображает для пользователя.

Я уверен, что я использую правильный ключ для расшифровки.

Ответы на вопрос(1)

Ваш ответ на вопрос