1

我需要生成一个唯一的IV (Initialization Vector)标题。

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

如何在 中生成此唯一标识符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 - 用 sed 十进制到二进制第一个参数
  • printf "%0${2}s\n" | ... | tr - 用前导零填充到长度 $2
  • eval date... - 将当前时间放入变量中
  • date -d "$firstday 0" +%s - unixtime at jan1 00:00 (seconds)

运行:

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