ハードウェア乱数生成
/dev/urandom を使ってランダムなパスワードを生成する方法を読むと、
>env LC_ALL=C tr -dc a-zA-Z0-9 < /dev/random | fold -w 20 |head -1 6drFed868QT6LGyiwqUU
/dev/random
/dev/random
から読み込んだ中には記号も含まれているので、isalnum(buf[i])
で文字・数字だけを出力しています。
>gcc makepasswd.c -o makepasswd >./makepasswd htC7LG0wjqE1XPo16AGasqLIELhlpyOJp
#include <stdio.h> int isalnum(); int main() { FILE *fp; char buf[128]; fp = fopen("/dev/random", "rb"); // fread(保存先, 保存する大きさ, 保存する大きさの個数,読み込み元) fread(buf, sizeof(buf), 1, fp); for (int i = 0; i < sizeof(buf); i++) { if (isalnum(buf[i])) printf("%c", buf[i]); } printf("\n"); return 0; }