2010-12-01 19 views
4

私はアンドロイドアプリからサインアップするためにパスワードを入力させます。バイト配列をBase64に変換するandroidの文字列

サーバーのデータベースにパスワードを保存する前に、MD5の片方向ハッシュに変換してデータベースに保存する必要があります。

MessageDigest md = null; 
    try { 
     md = MessageDigest.getInstance("MD5"); 
    } catch (NoSuchAlgorithmException e3) { 
     // TODO Auto-generated catch block 
     e3.printStackTrace(); 
    } 
    try { 
     md.update(password.getBytes("UTF-8")); 
    } catch (UnsupportedEncodingException e3) { 
     // TODO Auto-generated catch block 
     e3.printStackTrace(); 
    } 
    byte raw[] = md.digest(); 

このバイト配列をBase64文字列に変換するにはどうすればよいですか。いくつかのフォーラムで、アンドロイドのデベロッパーサイトでアンドロイドのutilパッケージがBase64のエンコードとデコードを省略したことがわかりました。

何か助けていただければ幸いです。

答えて

3

アプリケーションをAPIレベル8以下で互換性を持たせたい場合は、3番目の部分ライブラリを引き込んでBase64エンコーディングを処理できます。

Apache Commons Codecはお試しいただけます。 Base64コーデック:http://commons.apache.org/codec/api-release/index.htmlが含まれています。

+3

非常にリベラルなライセンスを使ったすばらしいコンパクトな実装は、[ここ](http://iharder.sourceforge.net/current/java/base64/) –

+0

です。それまでの検索の場所を教えてください。 – Aakash

+0

クールな私にしよう! – Aakash

1

ここで私はそれをやったのです...このコードは私の質問の上のコードの後に​​あります。

StringBuffer hexString = new StringBuffer(); 
    for (int i=0; i<raw.length; i++) 
     hexString.append(Integer.toHexString(0xFF & raw[i])); 
    password = hexString.toString(); 

ありがとうございます。

+0

この回答は間違っていますが、この回答はバイトを16進数でエンコードしますが、質問はBASE64を要求しますが、これらの2つのエンコーディングの間には大きな違いがあります – Ferrybig

4

このような基本的なユーティリティクラスの場合、API 8でBase64の実装が遅れているので、自分のアプリケーションパッケージにthe latest source from the AOSP git repoをコピーします。これはAPIレベル3でコンパイルされます。

この方法では、AndroidのBase64実装のAPIと同じAPIでアプリケーションを作成し、すべてのアンドロイドバージョンと互換性を保つことができます。 API 8は市場で最も古いバージョンのアンドロイドになります。パッケージ内のクラスのバージョンを削除し、android.util.Base64の公式バージョンへのインポートを更新するだけです。

Eclipseヒント:ブラウザのソースに提供したリンクに従うだけで、すべてのコードを選択するにはCtrl-A、コピーするにはCtrl-Cを、Eclipseを開くにはクラスを作成するパッケージをクリックしますCtrl + Vを押します。 .javaファイルは自動的に作成され、ソースは正しいパッケージ宣言で直接変更されます。

+1

種類の私はひどくなりますが、これは迅速な解決策です。ありがとう! –

+0

ここにコードがあります:[link](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2_r1.1/android/util/Base64 .java) – Ben

関連する問題