1

一意のIV (Initialization Vector)ヘッダーを生成する必要があります。

IVは、年 (16 ビット、0 ~ 65535 )、現在時刻 (64 ビット、今年はナノ秒)、および 96 ビット IV を生成するためのカウンター (16 ビット) で構成される 96 ビット長でなければなりません。

でこの一意の識別子を生成するにはどうすればよいCGI bash scriptですか?

4

1 に答える 1

1

y2.sh:

#!/bin/bash
d2b() {
    printf "%0${2}s\n" $(bc <<< "obase=2;$1")|tr ' ' '0'
}

counter=1
eval "$(date +'firstday=%Y-01-01 now=%s nano=%N year=%Y')"
midnight=$(date -d "$firstday 0" +%s)
seconds=$((now - midnight))
header=$(d2b $year 16)$(d2b $seconds$nano 64)$(d2b $counter 16)
echo header: $header
  • function() { ... } - bash でカスタム関数を定義します
  • bc <<< "obase=2;$1 - 10 進数から 2 進数へ sed の最初のパラメーター
  • printf "%0${2}s\n" | ... | tr - 長さ $2 まで先行ゼロで埋めます
  • eval date... - 現在時刻を変数に入れる
  • date -d "$firstday 0" +%s - unixtime at jan1 00:00 (秒)

それを実行します:

$ ./y2.sh
header: 000001111110000000000000011000100101000110110001011001011100011000011100010000010000000000000001
于 2016-11-16T06:20:52.270 に答える