スペースなしでランダムな16進数を作成する方法は?

スペースなしでランダムな16進数を作成する方法は?

私が次のことをするなら:

openssl rand 16 > file.txt

次のファイルを取得します。

3e1c 37e2 96fc 7029 970c cc87 98fe 40f7
7c70 5a9a 30da 7b72 0064 9a54 ae9c ed91

スペースや改行文字なしでこれを行う方法はありますか?

答え1

trたとえば、次のようにスペースや改行を削除できます。

openssl rand 16 | tr -d '\n '  > file.txt

あるいは、フラグが実際に覚えていない場合は、tr改行文字を空白に変換してsed空白を削除するために使用できます。

openssl rand 16 | tr '\n' ' ' | sed 's/ //g' > file.txt

答え2

openssl rand 1616進出力が生成されず、空白もopenssl rand -hex 16出力されず、32バイト(64桁)の代わりに16バイト(32桁の16進数)を出力します。ただし、とにかくスペースや改行文字を削除するには、次のようにしますtr

$ cat data
3e1c 37e2 96fc 7029 970c cc87 98fe 40f7
7c70 5a9a 30da 7b72 0064 9a54 ae9c ed91
$ cat data | tr -d '\n '; echo
3e1c37e296fc7029970ccc8798fe40f77c705a9a30da7b7200649a54ae9ced91

16進数以外のすべての文字を削除するには、tr -dc 0-9A-Fa-fまたはを使用できますtr -dc '[:xdigit:]'

任意の16進数を生成するには/dev/urandom(Linux/dev/randomまたは/dev/arandom他のUnixバリアントで)入手できます。

</dev/urandom od -An -tx1 | head -c 32 | tr -d ' \n' 

関連情報