ビット列をバイナリデータとして保存したい
ビット列をバイナリデータとして保存したい
NISTsp800-22を用いて自作乱数生成器の乱数検定をしたいと思っています。
下の記事を参考にしたのですが、テストデータの形がわかりません。
参考にした記事はpythonで次の様にして
( 1,000,000 * 55 )の疑似乱数を生成していました。
import random
bytes = random.randbytes(1000000 * 55 // 8)
with open("random.bin", "wb") as f:
f.write(bytes)
検定プログラムが受け取れる入力ファイルはASCIIファイルか、バイナリファイルならしく、先ほどの出力結果であるバイナリファイルを開くと下の様な記述でした。
自分で試した事
自作の生成器から得られたデータは0/1で、( 1,000,000 * 55 )ビットのビット列として保存してあります。そのファイルを検定プログラムに与えた所、igamc UNDERFLOWと何度も表示され、正しく検定ができませんでした。検定プログラムが受け取れる形にするためにはどのような加工が必要でしょうか?ご助言願います。
検定プログラムの実行の様子
./assessの引数は「1000000」としました。
- 0を入力(検証対象を入力ファイルに指定)
ファイル名を入力(Rnums55M.bin) - 1を入力 (すべての検定を行う)
- 0を入力 (continue)
- 55を入力(検定回数を55回に指定)
- 1を入力 (バイナリファイルを指定)
$ ./assess 1000000
G E N E R A T O R S E L E C T I O N
______________________________________
[0] Input File [1] Linear Congruential
[2] Quadratic Congruential I [3] Quadratic Congruential II
[4] Cubic Congruential [5] XOR
[6] Modular Exponentiation [7] Blum-Blum-Shub
[8] Micali-Schnorr [9] G Using SHA-1
Enter Choice: 0
User Prescribed Input File: Rnums55M.bin
S T A T I S T I C A L T E S T S
_________________________________
[01] Frequency [02] Block Frequency
[03] Cumulative Sums [04] Runs
[05] Longest Run of Ones [06] Rank
[07] Discrete Fourier Transform [08] Nonperiodic Template Matchings
[09] Overlapping Template Matchings [10] Universal Statistical
[11] Approximate Entropy [12] Random Excursions
[13] Random Excursions Variant [14] Serial
[15] Linear Complexity
INSTRUCTIONS
Enter 0 if you DO NOT want to apply all of the
statistical tests to each sequence and 1 if you DO.
Enter Choice: 1
P a r a m e t e r A d j u s t m e n t s
-----------------------------------------
[1] Block Frequency Test - block length(M): 128
[2] NonOverlapping Template Test - block length(m): 9
[3] Overlapping Template Test - block length(m): 9
[4] Approximate Entropy Test - block length(m): 10
[5] Serial Test - block length(m): 16
[6] Linear Complexity Test - block length(M): 500
Select Test (0 to continue): 0
How many bitstreams? 55
Input File Format:
[0] ASCII - A sequence of ASCII 0's and 1's
[1] Binary - Each byte in data file contains 8 bits of data
Select input mode: 1
Statistical Testing In Progress.........
igamc: UNDERFLOW
igamc: UNDERFLOW
.
.
.
igamc: UNDERFLOW
Statistical Testing Complete!!!!!!!!!!!!
自作乱数生成器の出力結果
自作の乱数生成器の出力結果を「Rnums55M.bin」というファイルに保存しました。ファイルのサイズは55MBで、1,000,000個のデータが55行あります。