解答例 - 実習課題1 - 10.メッセージダイジェスト
(実習課題1)
以下のコンソールアプリケーションを作成しなさい。
- MD5アルゴリズムを用いて、プログラム引数で指定した文字列のハッシュ値を計算して表示すること。
- 複数プログラム引数を指定した場合は、それぞれのハッシュ値を計算すること。
解答例
/** * CalculateHashValue.java * TECHSCORE Java10章 実習課題1 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.utility.chapter10.exercise1; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class CalculateHashValue { public static void main(String[] args) { if (args.length == 0){ System.out.println("調べたい文字列を入力してください。"); System.out.println("Usage:$java com.techscore.utility.chapter10.exercise1. CalculateHashValue arg1 arg2 ..."); return; } try{ MessageDigest md = MessageDigest.getInstance("MD5"); for(int j = 0; j < args.length; j++){ md.update(args[j].getBytes()); byte[] digest=md.digest(); md.reset(); StringBuffer buffer=new StringBuffer(); for(int i=0; i<digest.length; i++){ String tmp=Integer.toHexString(digest[i] & 0xff); if(tmp.length()==1){ buffer.append('0').append(tmp); }else{ buffer.append(tmp); } } System.out.println("●第[" + (j+1) + "]引数:[" + args[j] + "]"); System.out.println(" ハッシュ値は[0x"+ buffer + "]です。"); } }catch(NoSuchAlgorithmException e){ System.err.println(e); } } }▼ソース
com/techscore/utility/chapter10/exercise1/CalculateHashValue.javaを表示▼実行例
# java com.techscore.utility.chapter10.exercise1/CalculateHashValue arg1 arg2 ....