Javaプログラム (Utility)
Java言語で記述されたユーティリティプログラムのサンプルを紹介します.
パッケージ名は,Blanclux.util としていますので,コンパイル時にはディレクトリ構成に注意して下さい.
バイト配列を扱うクラス (Blanclux.util.ByteArray)です.ソースプログラムは,ByteArray.java です.暗号機能の実装にしばしば必要となるバイトデータの各種処理が用意されています.
プログラムはJavaのクラスで,以下のメソッドがあります.
- コンストラクタ
- ByteArray()
コンストラクタ (初期領域長 512バイト)
- ByteArray(int offset)
コンストラクタ (初期領域長を指定)
- ByteArray(String s)
コンストラクタ (文字列 s で初期化)
- ByteArray(byte b[])
コンストラクタ (バイト配列 b で初期化)
- データ取得
- byte[] getBytes()
バイト配列を取得する.
- byte[] toBytes()
バイト配列のコピーを取得する.
- byte get(int i)
i バイト目のバイトデータを取得する.
- int length()
バイト配列の長さを取得する.
- データ追加
- void append(byte ch)
バイトデータ ch を追加する.
- void append(int x)
整数データ x を追加する.
- void append(ByteArray b)
ByteArray b を追加する.
- void append(byte b[])
バイト配列 b を追加する.
- void append(byte b[], int size)
バイト配列 b の先頭 size バイトを追加する.
- void append(byte b[], int start, int size)
バイト配列 b の start バイトから size バイトを追加する.
- void append(String s)
文字列 s を追加する.
- データ結合,分割.削除
- static byte[] concat(byte[] src1, int src1Off, int src1Len, byte[] src2, int src2Off, int src2Len)
src1 の srcOff1バイト からの src1Lenバイト と src2 の srcOff2バイト からの src2Lenバイトを結合したデータを返す.
- static byte[] concat(byte[] src1, byte[] src2)
src1 と src2 を結合したデータを返す.
- static void split(ByteArray a, ByteArray b, byte[] c, int size)
バイト配列 c を size バイトの a と c - size バイトの b に分割する.
- void chop(int i)
i バイト目以降を削除する.
- void clear()
バイト配列をクリアする.
- 比較
- boolean equals(ByteArray b)
ByteArray b と等しいか判定する.
- static boolean isEqual(byte[] a, byte[] b)
バイト配列 a とバイト配列 b が等しいか判定する.
- static boolean isEqual(byte[] a, int aOff, byte[] b, int bOff, int len)
バイト配列 a (オフセット aOff) とバイト配列 b (オフセット bOff) の len バイトが等しいか判定する.
- データ処理
- static byte[] xor(byte[] a, byte[] b, int len)
バイト配列 a と b の len バイトの排他的論理和を返す.
- static byte[] xor(byte[] a, byte[] b)
バイト配列 a と b の排他的論理和を返す.
- static byte[] reverseBit(byte[] b)
ビット順序を入替えたバイト配列を返す.
- データ形式変換
- String toString()
文字列に変換する.
- static void printHex(byte b)
バイトデータ b を 16進2桁で出力する.
- static String toHexStrFmt(byte[] bytes)
バイト配列 bytes を16進文字列に変換する(折り返し表示).
- String toHexStrFmt()
16進文字列に変換する(折り返し表示).
- static String toHexStr(byte[] bytes)
バイト配列 bytes を16進文字列に変換する.
- String toHexStr()
16進文字列に変換する.
- static byte[] strtoByte(String s)
16進文字列 s をバイト配列に変換する.
- static byte[] itoByte(int a, int blen)
整数 x を blen バイトのバイト列に変換する (Big-Endian).
- static byte[] itoByte(int x)
整数 x をバイト列(4バイト)に変換する.
- static byte[] itoByteStr(int num)
整数 num を文字形式のバイト列(4バイト)に変換する.
- static int bytetoI(byte[] b, int blen)
長さ blen のバイト配列 b を整数に変換する.
- 入出力
- void writeTo(OutputStream out)
OutputStream out にバイトデータを出力する.
- static byte[] readData(String fname)
ファイル fname から読み込んだバイト配列を返す.
- static boolean writeData(String fname, byte data[])
バイト配列 data をファイル fname に格納する.