2012-10-05 45 views
0

我需要2種簡單的加密和解密方法使用其他String key作爲加密和解密密鑰來加密的ecrypted String b一個String a加密使用一個密鑰字符串的另一個字符串的字符串,編譯問題

我發現這個代碼,似乎在做什麼,我需要

public class DesEncrypter { 
    Cipher ecipher; 
    Cipher dcipher; 

    DesEncrypter(SecretKey key) { 
     try { 
      ecipher = Cipher.getInstance("DES"); 
      dcipher = Cipher.getInstance("DES"); 
      ecipher.init(Cipher.ENCRYPT_MODE, key); 
      dcipher.init(Cipher.DECRYPT_MODE, key); 

     } catch (javax.crypto.NoSuchPaddingException e) { 
     } catch (java.security.NoSuchAlgorithmException e) { 
     } catch (java.security.InvalidKeyException e) { 
     } 
    } 

    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 (javax.crypto.BadPaddingException e) { 
     } catch (IllegalBlockSizeException e) { 
     } catch (UnsupportedEncodingException e) { 
     } catch (java.io.IOException 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 (javax.crypto.BadPaddingException e) { 
     } catch (IllegalBlockSizeException e) { 
     } catch (UnsupportedEncodingException e) { 
     } catch (java.io.IOException e) { 
     } 
     return null; 
    } 
} 

不幸的是需要一個修復到作品, 我

sun.misc.BASE64Encoder() 

得到一個錯誤,並在

sun.misc.BASE64Decoder() 

,要求我在sun.misc包中創建base64編碼器和解碼器

如何解決?

+0

什麼是錯誤嗎? –

回答

1

sun.misc.BASE64Encodersun.misc.BASE64Decoder不存在於Android Java實現中。它們僅在Oracle的JDK中是內部的,儘管您有訪問權限,但不能保證在那裏。

您可以使用android.util.Base64類對Android中的base 64進行編碼和解碼。

要編碼的改變:

return new sun.misc.BASE64Encoder().encode(enc); 

到:

return android.util.Base64.encodeToString(enc, android.util.Base64.DEFAULT); 

爲了解碼,變化:

byte[] dec = new sun.misc.BASE64Decoder().decodeBuffer(str); 

到:

byte[] dec = android.util.Base64.decode(str, android.util.Base64.DEFAULT); 
+0

謝謝! ....有一種使用String鍵生成SecretKey的方法;? – AndreaF