2013-09-03 2 views
0

Имеется ли скрипт bash для генерации бакса HMAC-SHA1?HMAC-SHA1 в bash

Эквивалент следующего кода PHP:

hash_hmac("sha1", "value", "key", TRUE); 

Параметры

true : When set to TRUE, outputs raw binary data. FALSE outputs lowercase hexits. 

Благодарности.

см HMAC-SHA1 in bash

+0

Возможный дубликат [HMAC-SHA1 in bash] (http://stackoverflow.com/questions/7285059/hmac-sha1-in-bash) –

ответ

0

bash В сам, нет, он может сделать много вещей, но он также знает, когда полагаться на внешние инструменты.

Например, Wikipedia page обеспечивает реализацию Python, который bash может позвонить, чтобы сделать тяжелую работу для HMAC_MD5, повторяющееся ниже, чтобы сделать этот ответ самодостаточным:

#!/usr/bin/env python 
from hashlib import md5 
trans_5C = "".join(chr(x^0x5c) for x in xrange(256)) 
trans_36 = "".join(chr(x^0x36) for x in xrange(256)) 
blocksize = md5().block_size 

def hmac_md5(key, msg): 
    if len(key) > blocksize: 
     key = md5(key).digest() 
    key += chr(0) * (blocksize - len(key)) 
    o_key_pad = key.translate(trans_5C) 
    i_key_pad = key.translate(trans_36) 
    return md5(o_key_pad + md5(i_key_pad + msg).digest()) 

if __name__ == "__main__": 
    h = hmac_md5("key", "The quick brown fox jumps over the lazy dog") 
    print h.hexdigest() # 80070713463e7749b90c2dc24911e275 

(имея в виду, что Python также содержит SHA1, см. here для получения подробной информации о том, как использовать HMAC с конструктором hashlib.sha1()).

Или, если вы хотите запустить тот же код, что и PHP, можете попробовать запустить его с помощью phpsh, как описано в here.

Смежные вопросы