#!/bin/bash
# Program's Purpose: Compute time elapsed between epoch time and current time
# Produce an MD5 hash from that time
# Get code from that hash
# compute time elapsed in seconds between epoch time and current time
#EPOCH=$(date -u -d '2001-02-03 04:05:06' '+%F %H:%M:%S')
#CURRENT=$(date -u -d '2010-06-13 12:55:34' '+%F %H:%M:%S')
# code: dd15
EPOCH=$(date -u -d '1999-12-31 23:59:59' '+%F %H:%M:%S')
CURRENT=$(date -u -d '2013-05-06 07:43:25' '+%F %H:%M:%S')
# interval is time elapsed minus time elapsed % 60
echo $EPOCH
echo $CURRENT
read YEAR1 M1 DAY1 HOUR1 MIN1 SEC1 <<< "${EPOCH//[:-]/ }"
read YEAR2 M2 DAY2 HOUR2 MIN2 SEC2 <<< "${CURRENT//[:-]/ }"
echo $YEAR1 $M1 $DAY1 $HOUR1 $MIN1 $SEC1
# date in seconds from
sec1=$(date -d "$EPOCH" -u +%s)
sec2=$(date -d "$CURRENT" -u +%s)
echo $sec1
echo $sec2
# get the difference from the two times
difference=$((sec2 - sec1))
difference=$((difference - ((difference % 60))))
echo $difference
# get the hash from the time
hash=$(echo -n $difference | md5sum | tr -d '\n')
hash=$(echo -n $hash | md5sum | tr -d '\n')
echo $hash
# creating two strings, one with all of the letters
# the other with all of the numbers
letter=$(echo $hash | sed 's/[0-9]*//g' | cut -c1-2)
echo $letter
num=$(echo $hash | sed 's/[^0-9]*//g')
echo $num
#num=$(echo $num | cut -c1-2)
#echo $num
# getting the last two numbers in reverse order
num1=$(echo ${num: -1})
num=$(echo "${num::-1}")
echo $num
num2=$(echo ${num: -1})
code="$letter$num1$num2"
echo $code
Ich versuche, ein Programm zu schreiben, die eine Epoche Zeit und aktuelle Zeit in Anspruch nimmt, berechnet die Differenz in Sekunden und erstellt dann einen Code durch einen doppelten MD5-Hash auf der Zeit in Sekunden zu tun. Zu welcher Zeit habe ich derzeit eingegeben, sollte der Unterschied in Sekunden 421, 141, 406 sein, und der 'Code' soll auf 60-Sekunden Intervallen basieren, so dass der Code, den ich versuche zu generieren, sollte kommen aus 421, 141, 380.Was verursacht, dass mein MD5-Hash falsch ausgegeben wird?
Der resultierende Hash sollte 042876ca07cb2d993601fb40a1525736
sein, aber ich bin immer d49904f9e7e62d0ff16e523d89be08eb
. Kann mir jemand sagen, was ich gerade mache falsch?
las ich, dass bash eine neue Zeile am Ende der Saiten verläßt, so lief ich mit -n
Option Echo, das Newline zu entfernen, aber ich bin noch nicht die bevorzugten Ergebnisse.
Warum laufen Sie 'md5sum' ** zweimal **? Auch, ** was ** 'String' produziert Ihre erwartete Ausgabe? –
Dies war Teil einer Zuweisung, und wir wurden aufgefordert, md5 (md5 (Differenz)), so dass die Variable geschrieben als "Differenz" in md5 Echo, und dann setze ich "Hash" zu md5 der Differenz. – Sherbs
Welche letzte Zahl sollte genau den erwarteten Hash ergeben? – tripleee