ハッシュ計算(入力を byte 配列とする場合)
MessageDigest#update() の入力が,元から byte 配列だったから簡単だった.String#getBytes() でなく,単に org を入れるだけになった.
さて,多次元配列の時はどうしたら良いんだろう.
Java の配列は C/C++ とは違っているんだって.知らなかった.それなら一次元配列のままでいいや.
public static String getHash(byte[] org, String algorithm){ // 引数・アルゴリズム指定が無い場合は計算しない if ((org== null)||(algorithm== null)){ return null; } // 初期化 MessageDigest md= null; try{ md= MessageDigest.getInstance(algorithm); } catch(NoSuchAlgorithmException e){ return null; } md.update(org); byte[] hash= md.digest(); // ハッシュを16進数文字列に変換 StringBuffer sb= new StringBuffer(); int cnt= hash.length; for(int i= 0; i< cnt; i++){ sb.append(Integer.toHexString( (hash[i]>> 4) & 0x0F ) ); sb.append(Integer.toHexString( hash[i] & 0x0F ) ); } return sb.toString(); }