【Java】nextBytesでランダムなバイト配列を取得する!
ランダムなバイト配列を取得するにはSecureRandomクラスのnextBytesメソッドを使用します。
SecureRandomクラスのnextBytesメソッドはユーザーが指定したバイト配列にランダムバイトとして生成する
メソッドとなります。
nextBytesメソッドのパラメータにバイト配列を指定することで指定したバイト配列にランダムバイトを作成します。
また、SecureRandomクラス以外にもRandomクラスのnextBytesメソッドを使用してランダムなバイト配列を取得することもできますが、SecureRandomクラスのnextBytesメソッドよりも推測が困難な乱数を作成するので注意が必要です。
今回はSecureRandomクラスのnextBytesメソッドを使って以下の場合でランダムなバイト配列を取得していきます。
⚫︎ ランダムなバイト配列を一気に取得する場合
⚫︎ ランダムなバイト配列を1つずつ取得する場合
また、Randomクラスを使ってランダムなバイト配列を取得する方法についても紹介していきます。
目次
nextBytesメソッドとは
SecureRandomクラスのnextBytesメソッドはユーザーが指定したバイト配列にランダムバイトとして生成するメソッドとなります。
nextBytesメソッドの書き方
nextBytesメソッドの構文は下記となります。
1 2 3 |
import java.security.secureRandom; secureRandom.nextBytes(byte配列) |
パラメータ
⚫︎ byte配列:
ランダムに取得したいbyte配列を指定します
nextBytesの()にbyte配列を指定し、メソッドを呼び出すことで()に指定したbyte配列にランダムなバイト配列を取得します。
ランダムなバイト配列を取得するサンプルコード
ランダムなバイト配列を取得するサンプルコードを紹介します。
ランダムなバイト配列を一気に取得する場合
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// ランダムなバイト配列を取得する import java.security.SecureRandom; import java.util.Arrays; public class Main { public static void main(String[] args) throws Exception { SecureRandom sRandom = new SecureRandom(); // ランダムのバイト配列を格納 byte[] bytes = new byte[10]; // ランダムなバイト配列を作成 sRandom.nextBytes(bytes); // 作成結果を表示 System.out.println(Arrays.toString(bytes)); } } |
出力結果
[-3, 96, -96, 24, 118, 8, 24, 44, 40, -33]
nextBytesメソッドによってランダムなバイト配列を一気に取得しています。
ランダムなバイト配列を1つずつ取得する場合
ランダムなバイト配列を1つずつ取得するには拡張for文を使用します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// ランダムなバイト配列を取得する import java.security.SecureRandom; import java.util.Arrays; public class Main { public static void main(String[] args) throws Exception { SecureRandom sRandom = new SecureRandom(); // ランダムのバイト配列を格納 byte[] bytes = new byte[10]; // ランダムなバイト配列を作成 sRandom.nextBytes(bytes); for (int byteA: bytes){ System.out.println(byteA); } } } |
出力結果
-97
-101
-52
-89
7
-13
16
86
-78
74
拡張for文によってランダムなバイト配列を1つずつ取得しています。
Randomクラスでランダムなバイト配列を取得する場合
RandomクラスのnextBytesメソッドを使用してもランダムなバイト配列を取得することができます。
しかし、SecureRandomクラスのnextBytesメソッドよりも推測が困難な乱数を作成するので注意してください。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// ランダムなバイト配列を取得する import java.util.Random; import java.util.Arrays; public class Main { public static void main(String[] args) throws Exception { Random random = new Random(); byte[] bytes = new byte[10]; random.nextBytes(bytes); System.out.println(Arrays.toString(bytes)); } } |
出力結果
[-45, 51, -56, 110, -12, -6, 24, -116, 104, 61]
RandomクラスのnextBytesメソッドによってランダムなバイト配列を取得しています。
Randomクラスを使用する場合もnextByteメソッドを使用します。
今回のポイント
nextBytesでランダムなバイト配列を取得
ランダムなバイト配列を取得するにはSecureRandomクラスのnextBytesメソッドを使用する
⚫︎ SecureRandomクラスのnextBytesメソッドでランダムなバイト配列を作成する
⚫︎ nextBytesメソッドのパラメータにバイト配列を指定し、メソッドを呼び出すことでパラメータのバイト配列にランダムなバイトを作成する
⚫︎ ランダムなバイト配列を1つずつ取得する場合には拡張for文を使用する
⚫︎ RandomクラスのnextBytesメソッドを使用してもランダムなバイト配列を作成する
(推測が困難な乱数を作成する)
関連記事
乱数を取得するMathクラスのrandomメソッドについてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。