2011-02-05 17 views
2

AndroidでTriple DESを使用した暗号化はどのように行われますか?事前定義されたクラスはありますか?androidの暗号化

答えて

1

これはうまく動作しない場合があります。 は、あらゆる種類のデータを暗号化するために使用することができますより多くの暗号化アルゴリズムがありますが楽しい、JAL

public BoolString tryEncrypt(String inString, String key){ 
     boolean success= true; 
     String err=""; 
     String outString="Encrypted"; // BoolString.value 

     try { 
      byte[] byteKey= key.getBytes("UTF8"); 
      if (byteKey.length != 24) { 
       success= false; 
       err= "Key is "+byteKey.length+" bytes. Key must be exactly 24 bytes in length."; 
       throw new Exception(err); // could also return here 
      } 
      KeySpec ks= new DESedeKeySpec(byteKey); 
      SecretKeyFactory skf= SecretKeyFactory.getInstance("DESede"); 
      SecretKey sk= skf.generateSecret(ks); 
      Cipher cph=Cipher.getInstance("DESede"); 
      cph.init(Cipher.ENCRYPT_MODE, sk); 
      byte[] byteInString= inString.getBytes("UTF8"); 
      byte[] byteEncoded= cph.doFinal(byteInString); 
      outString= Base64.encodeToString(byteEncoded, Base64.DEFAULT); 
     } 
     catch (UnsupportedEncodingException e){err="Unable to convert key to byte array."; success= false;} 
     catch (InvalidKeyException e){err="Unable to generate KeySpec from key";success= false;} 
     catch (NoSuchAlgorithmException e){err="Unable to find algorithm.";success= false;} 
     catch (InvalidKeySpecException e){err="Invalid Key Specification";success= false;} 
     catch (NoSuchPaddingException e){err="No such padding";success= false;} 
     catch (IllegalArgumentException e){err="Illegal argument";success= false;} 
     catch (Exception e){err=e.getMessage();success= false;} 

     return new BoolString(success,err,outString); 
    } 

// a utility class to signal success or failure, return an error message, and return a useful String value 
// see Try Out in C# 
public final class BoolString { 
    public final boolean success; 
    public final String err; 
    public final String value; 

    public BoolString(boolean success, String err, String value){ 
     this.success= success; 
     this.err= err; 
     this.value= value; 
    } 
} 
1

暗号として「DESede」を指定する必要があります。 DESedeKeySpecおよびthis exampleを参照してください。

+0

ありがとう非常に仲間! – cris

+0

このソリューションは機能しましたか? – Darpan

0

を持っています。 私は多くの理由でAES(Advance Encryption Standard)を使用することをお勧めします。まず第一にそれはより大きいキーサイズを提供し、暗号化アプリケーションの作成前に識別されなければならない弱く弱いキーはありません。さらに、AESは、差分暗号解読などの他の理論攻撃に対して脆弱ではありません。