Зашифруйте текст с помощью секретного ключа DES в java

Пытаюсь сделать программу шифрования и дешифрования через DES. В этом разделе кода я создаю secretKey

  Cipher desCipher;
  KeyGenerator keygenerator;
  SecretKey myDesKey; 
  try{
    keygenerator = KeyGenerator.getInstance("DES");
    myDesKey = keygenerator.generateKey();
    byte[] encoded = myDesKey.getEncoded();
    // convert secret key to string 
   String stringKey =Base64.encodeToString(myDesKey.getEncoded());

    // converting back from  string to secret key. 
    //its returning javax.crypto.spec.SecretKey object but i need com.sun.crypto.provider.DESKey object

   SecretKey originalKey = new SecretKeySpec(stringKey.getBytes(), 0, stringKey.length(), "DES"); 
      String text="hello how are you " 
     desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
    desCipher.init(Cipher.ENCRYPT_MODE, myDesKey);
    byte[] textEncrypted = desCipher.doFinal(text.getBytes());   

    System.out.println("text encrypted successfully");        

    }
    catch(Exception ex)
     {
       ex.printStackTrace();
     }

is throwing the exception 

java.security.InvalidKeyException: ни один установленный провайдер не поддерживает этот ключ: (null)


person Sandeep Sehrawat    schedule 12.11.2013    source источник


Ответы (1)


Вы конвертируете ключ в base-64, но не конвертируете его снова.

person user207421    schedule 12.11.2013
comment
Ошибка в том, что вы конвертируете ключ в base-64, но не конвертируете его обратно. - person user207421; 12.11.2013
comment
как мне конвертировать, вы можете привести пример - person Sandeep Sehrawat; 12.11.2013
comment
BASE64Decoder decoder = новый BASE64Decoder (); byte [] encodedKey = decoder.decodeBuffer (значение ключа); Ключ ключа = новый SecretKeySpec (encodedKey, 0, encodedKey.length, DES); я использовал это вместо - person Sandeep Sehrawat; 12.11.2013
comment
Да, декодирование base64 вылечило бы ошибку, заключающуюся в том, что вы не декодируете base64. Это то, о чем вы спрашиваете сейчас? - person user207421; 12.11.2013
comment
даже это не работает, просто посмотрите, в чем разница между KeyGenerator.getInstance (AES) .generateKey (); и SecretKeySpec () - person Sandeep Sehrawat; 12.11.2013
comment
В этом обмене нет никакого смысла. Если вам нужен ключ AES, почему вы указываете DES? Если все это часть вашего вопроса, отредактируйте его в своем вопросе. Все остальные ваши комментарии здесь на 100% избыточны. - person user207421; 12.11.2013