#!/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
Я пытаюсь написать программу, которая принимает время эпохи и текущего времени, вычисляет разницу в секундах, а затем создает код, выполнив двойной md5 хэш на время в секундах. В какие времена Я ввел в настоящее время, разница в секундах должна быть 421, 141, 406, а «код» должен быть основан на 60-секундном интервале , поэтому код, который я пытаюсь создать, должен родом из 421, 141, 380.Что вызывает хеш md5, который выходит неправильно?
Полученный хэш должен быть 042876ca07cb2d993601fb40a1525736
, но я получаю d49904f9e7e62d0ff16e523d89be08eb
. Может ли кто-нибудь сказать мне, что я делаю неправильно?
Я прочитал, что Баш оставляет символ новой строки в конце строк, поэтому я побежал эхо с -n
вариант, чтобы удалить эту строку, но я до сих пор не получать предпочтительные результаты.
Почему вы используете 'md5sum' ** дважды **? Кроме того, ** что ** 'String' производит ваш ожидаемый результат? –
Это было частью задания, и нам сказали md5 (md5 (разность)), поэтому переменная, написанная как «разница», отражается в md5, а затем я устанавливаю «hash» как разность md5. – Sherbs
Какое окончательное число должно точно выражать ожидаемый хеш? – tripleee