生成唯一的 IV header

Generate a unique IV header

我需要生成唯一的 IV (Initialization Vector) header。

IV 为 96 位长,由年份组成(16 位,0 到 65535),当前时间(64位,今年纳秒),和一个计数器(16位)生成96位IV。

如何在 CGI bash script 中生成这个唯一标识符?

在y2.sh中:

#!/bin/bash
d2b() {
    printf "%0s\n" $(bc <<< "obase=2;")|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 - 十进制到二进制的第一个参数与 sed
  • printf "%0${2}s\n" | ... | tr - 用前导零填充到长度 $2
  • eval date... - 将当前时间放入变量
  • date -d "$firstday 0" +%s - 1 月 1 日的 unixtime 00:00(秒)

运行它:

$ ./y2.sh
header: 000001111110000000000000011000100101000110110001011001011100011000011100010000010000000000000001