Javaでbyteの配列を16進数文字列に変換する方法
提供: Java入門
スポンサーリンク
Javaのbyte配列(byte[])を16進数文字列に変換する方法を紹介します。ここでは、String.format()を利用します。
読み方
- byte
- ばいと
概要
以下の例では、byte[]のデータを16進数文字列に変換します。String.format() を利用して、力技で変換しています。
StringBuilder sb = new StringBuilder(2 * byte.length); for(byte b: cipher_byte) { sb.append(String.format("%02x", b&0xff) ); } System.out.println( sb );
Integer.toHexString() を利用する方法もありますが、 0 埋めをしないので、使用していません。
ソースコード
以下のソースコードは、文字列 hoge の SHA-256の値を計算し、16進数に変換して、表示するプログラムです。
/* * SHA2.java * Copyright (C) 2015 kaoru <kaoru@localhost> */ import java.security.MessageDigest; class SHA2 { public static void main(String[] args) { String text = "hoge"; byte[] cipher_byte; try{ MessageDigest md = MessageDigest.getInstance("SHA-256"); md.update(text.getBytes()); cipher_byte = md.digest(); StringBuilder sb = new StringBuilder(2 * cipher_byte.length); for(byte b: cipher_byte) { sb.append(String.format("%02x", b&0xff) ); } System.out.println( sb ); } catch (Exception e) { e.printStackTrace(); } } }
コンパイル
$ javac SHA2.java
実行例
sha256コマンドでhogeを計算した結果、SHA2.java と同じ結果が得られたことが確認できました。
$ java SHA2 ecb666d778725ec97307044d642bf4d160aabb76f56c0069c71ea25b1e926825 $ sha256 -s hoge SHA256 ("hoge") = ecb666d778725ec97307044d642bf4d160aabb76f56c0069c71ea25b1e926825
関連項目
ツイート
スポンサーリンク