2016-11-16 2 views
1

Je dois générer un en-tête IV (Initialization Vector) unique.Générer un en-tête IV unique

L'IV EST être 96 bits de long, comprenant de l'année (16 bits, de 0 à 65535), l'heure courante (64 bits, nanosecondes cette année), et un compteur (16 bits) pour générer un 96 bits IV.

Comment puis-je générer cet identifiant unique dans CGI bash script?

Répondre

1

dans 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 
    fonction
  • () {...} - définir une fonction personnalisée dans bash
  • bc < < < « obase = 2; 1 $ - décimal en binaire le 1er paramètre avec sed
  • printf "% 0 $ {2} s \ n" | ... | tr - remplir avec des zéros à la longueur 2 $
  • date eval ... - mettre l'heure actuelle dans les variables
  • -D date "FirstDay de $ 0" +% s - unixtime à jan1 00:00 (secondes)

l'exécuter:

$ ./y2.sh 
header: 000001111110000000000000011000100101000110110001011001011100011000011100010000010000000000000001 
+0

Merci pour la solution, fonctionne très bien pour moi. Pourriez-vous s'il vous plaît expliquer en détail? –