# ランダムなバイト列の生成

# 結論

32 バイトのランダムなバイト列

dd if=/dev/urandom bs=32 count=1 2>/dev/null

無意味だけどこんなのも

dd if=/dev/urandom bs=4 count=8 2>/dev/null

/dev/urandom ってファイルをランダムバイトで満たすぐらいしか使いみちしらなかったんですけど、こんな使い方もできるんですね
ちなみに味噌は 2>/dev/null で、

?1+0 records in
1+0 records out
32 bytes copied, 0.000237845 s, 135 kB/s

# base64

ランダムなバイト列 を base64 で可視化する場合は、入ってないマシンが考えにくいほど普遍的に遍在してる openssl をつかって

dd if=/dev/urandom bs=32 count=1 2>/dev/null | openssl base64
3LFq53dO7fthcmPen8Kq0K6xqglpiZhvAmDIVCHpCSQ=

もしくは、base64 コマンドがはいっているんだったら

dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64
GYGfSJUbspY32P9IuyN+XGyqpM9/hxkMCK4UX9oim44=

# base64url

Base64 の + とか(わざわざこれを Base64のエンコーデッドなアルファベットに入れてくださった先人の頭を蹴っ飛ばしたい思いです)をリクエストの body に入れて post すると消えてしまうので、+ を - に、/ を _ に変換するBase64URL (opens new window) が求められる場合も多いですが、そのまま +と/ を - と _ に変換して以下でいいと思います

dd if=/dev/urandom bs=32 count=1 2>/dev/null | openssl base64 | tr +/ -_
YGhOn9OzAYQnE16wL-Vaw2rTgo4e0_rjSZWFyPBDo_o=

# references


Last Updated: 2021/2/28 9:04:39