生成唯一的IV标头

时间:2016-11-16 04:54:26

标签: linux bash cgi uniqueidentifier initialization-vector

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

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

如何在CGI bash script

中生成此唯一标识符

1 个答案:

答案 0 :(得分: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&lt;&lt;&lt; “obase = 2; $ 1 - 十进制到二进制第一个参数,用sed
  • printf“%0 $ {2} s \ n”| ...... | tr - 用前导零填充长度$ 2
  • 评估日期... - 将当前时间设为变量
  • date -d“$ firstday 0”+%s - unixtime at jan1 00:00(seconds)

运行它:

$ ./y2.sh
header: 000001111110000000000000011000100101000110110001011001011100011000011100010000010000000000000001