IllegalBlockSizeException должен решить

Я написал свою программу в Яве следующим эта обучающая программа http://www.java2s.com/Code/Android/Security/AESEncryption.htmНо я получаю исключение т.е. "javax.crypto. IllegalBlockSizeException: Входная длина должна быть многократной из 16, расшифровывая с обитым шифром"

Кто-либо может помочь мне?

public class utils {

public static String encrypt(String message,String secretPhrase){
    try{
        MessageDigest mdig=MessageDigest.getInstance("MD5");
        byte[] digestedBytes=mdig.digest(secretPhrase.getBytes("UTF-8"));
        SecretKeySpec keySpec=new SecretKeySpec(digestedBytes,"AES");

        Cipher cipher=Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, keySpec);
        byte[] encryptedBytes=cipher.doFinal(message.getBytes("UTF-8"));

        return new String(encryptedBytes,"UTF-8");
    }catch(Exception exc){
        return null;
    }
}

public static String decrypt(String message,String secretPhrase){
    try{
        MessageDigest mdig=MessageDigest.getInstance("MD5");
        byte[] digestedBytes=mdig.digest(secretPhrase.getBytes("UTF-8"));
        SecretKeySpec keySpec=new SecretKeySpec(digestedBytes,"AES");

        Cipher cipher=Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, keySpec);
        byte[] encryptedBytes=cipher.doFinal(message.getBytes("UTF-8"));

        return new String(encryptedBytes,"UTF-8");
    }catch(Exception exc){
        return null;
    }
}

}

0
Но как я могу добраться, последовательность от шифруют метод, который я могу расшифровать в будущем...?
добавлено автор Mubbasher Khaliq, источник
На самом деле я делаю это для области пароля, таким образом, "КАПЛЯ" не соответствующий тип
добавлено автор Mubbasher Khaliq, источник
Для начала, вы не можете расшифровать зашифрованные байты как UTF-8. Они - просто случайные байты, не UTF-8. Зашифровать метод должен возвратить массив байтов.
добавлено автор Esailija, источник
Вам действительно нужна последовательность вообще? Если вы экономите его в файле, можно просто написать байты непосредственно файлу. Если вы экономите его в базе данных, можно использовать тип КАПЛИ колонки, которая хранит массивы байтов. И так далее.
добавлено автор Esailija, источник
Хорошо let' s игнорируют, насколько неуверенный это для паролей... КАПЛЯ является соответствующим типом, чтобы сохранить массивы байтов. Зашифрованный результат - массив байтов. Даже если бы вы превращаете его в base64 или base16, необходимо было бы просто сделать дополнительную расшифровку.
добавлено автор Esailija, источник

1 ответы

Хорошо попробуйте это,

public String encrypt(String str) {
    try {
       //Encode the string into bytes using utf-8
        byte[] utf8 = str.getBytes("UTF8");

       //Encrypt
        byte[] enc = ecipher.doFinal(utf8);

       //Encode bytes to base64 to get a string
        return new sun.misc.BASE64Encoder().encode(enc);
    }  catch (Exception e) {
    }
    return null;
}

public String decrypt(String str) {
    try {
       //Decode base64 to get bytes
        byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str);

       //Decrypt
        byte[] utf8 = dcipher.doFinal(dec);

       //Decode using utf-8
        return new String(utf8, "UTF8");
    }  catch (Exception e) {
    }
    return null;
}

Example using it

try {
   //Generate a temporary key. In practice, you would save this key.
   //See also Encrypting with DES Using a Pass Phrase.
    SecretKey key = KeyGenerator.getInstance("DES").generateKey();

   //Create encrypter/decrypter class
    DesEncrypter encrypter = new DesEncrypter(key);

   //Encrypt
    String encrypted = encrypter.encrypt("Don't tell anybody!");

   //Decrypt
    String decrypted = encrypter.decrypt(encrypted);
} catch (Exception e) {
}
0
добавлено
Не у всех JREs есть sun.misc, но есть альтернативы.
добавлено автор Joop Eggen, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Кибербезопасность АСУ ТП: RUSCADASEC Community
Кибербезопасность АСУ ТП: RUSCADASEC Community
1 389 участник(ов)

Группа открытого независимого сообщества специалистов по кибербезопасности АСУ ТП / RUSCADASEC для интерактивного обмена информацией по теме Подробнее: www.ruscadasec.ru Наш канал для основных новостей и материалов @RUSCADASECnews

secinfosec
secinfosec
697 участник(ов)

Эта группа про информационную безопасность. Целевая аудитория: пентестеры, ресерчеры, ибшники всех мастей. Реклама, криминал, политика и прочая чушь карается родовыми проклятьями. Митапы: https://www.youtube.com/channel/UCagEjp1FmxY9gsVxi6_d4SQ

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Chat Security / ИБач чат
Chat Security / ИБач чат
601 участник(ов)

Чат канала @ibach Обсуждение всего, что касается информационной безопасности Правила: https://t.me/chat_security/65

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async