2013-11-12 2 views
0

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

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: Нет установлен провайдер поддерживает этот ключ: (нуль)

+0

И ваш вопрос? – EJP

+1

Возможный дубликат [Преобразование ключа в строку и обратно в ключевую Java] (http://stackoverflow.com/questions/12292389/converting-key-to-string-and-back-to-key-java) –

+0

Посмотрите, что я я спрашиваю, что этот вопрос возвращается, и что я хочу –

ответ

1

Вы преобразование ключа в базу-64, но не преобразование это снова.

+0

где ошибка –

+3

Ошибка в том, что вы конвертируете ключ в base-64, но не конвертируете его снова. – EJP

+0

как я могу преобразовать, вы можете привести пример –