次のコードをAndroid 2.1環境で実行するとクラッシュします。次のコードは、平文文字列をMD5に変換する関数です。文字列はtest
としてハードコードされています。それは次のような結果を印刷する必要があります:098f6bcd4621d373cade4e832627b4f6
Android MD5の実装がクラッシュする
package md5.android;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Collections;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class md5android extends Activity {
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
String s = "test";
String res = md5(s);
TextView tv = new TextView(this);
tv.setText(res);
setContentView(tv);
}
public String md5(String s) {
try {
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(s.getBytes());
byte messageDigest[] = digest.digest();
StringBuffer hexString = new StringBuffer();
for (int i=0; i<messageDigest.length; i++)
hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
return hexString.toString();
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
}
スタックトレース:
Thread [<3> main] (Suspended (exception RuntimeException))
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2417
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2512
ActivityThread.access$2200(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 119
ActivityThread$H.handleMessage(Message) line: 1863
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4363
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 860
ZygoteInit.main(String[]) line: 618
NativeStart.main(String[]) line: not available [native method]
エラーログ:
素晴らしいです、それはクラッシュします...スタックトレースはどうですか?私のクリスタルボールが故障しています... – WarrenFaith
ログメッセージは非常に参考になります..エラーログも添付してください! – Abhinava
それについて申し訳ありません – joshdeco