2016-03-25 10 views
0

secret bir sır kullanarak ve foo bir yük kullanarak base64 kodlu bir HMAC SHA512 hash oluşturmaya çalışıyorum. .NET kodumun doğru değeri üretmesini sağlayamıyorum. Kodlamanın temel sorun olup olmadığını merak ediyorum..Net HMAC ve base64 Kodlama Sayı

Kodu:

UTF8Encoding encoding = new UTF8Encoding(); 
HMACSHA512 hmac = new HMACSHA512(encoding.GetBytes("secret")); // init the HMAC hash with "secret" as a byte array 
byte[] hash = hmac.ComputeHash(encoding.GetBytes("foo")); // hash the payload 
String result = Convert.ToBase64String(hash); // Base64 encode the payload 

yanlış karma & base64 sonucu:

gt9xA96Ngt5F4BxF/mQrXRPGwrR97K/rwAlDHGZcb6Xz0a9Ol46hvekUJmIgc+vqxho0Ye/UZ+CXHHiLyOvbvg==

beklenen karma & base64

sonucu:

ODJkZjcxMDNkZThkODJkZTQ1ZTAxYzQ1ZmU2NDJiNWQxM2M2YzJiNDdkZWNhZmViYzAwOTQzMWM2NjVjNmZhNWYzZDFhZjRlOTc4ZWExYmRlOTE0MjY2MjIwNzNlYmVhYzYxYTM0NjFlZmQ0NjdlMDk3MWM3ODhiYzhlYmRiYmU=

+1

siz "beklenen" sonucu oluşturmuyorsa, sen başka yerden alma olmalıdır. Bunu nerede görüyorsun? – dana

+0

@dana Bir node.js programı ve doğru karma üreten bir php programı var. – mark

cevap

2

İkinci sürüm yalnızca Hex temsili Base64 olduğundan, ilk olarak onaltı dizgeye ve dizenin Base64 ASCII sürümüne dönüştürmeniz gerekir.

Adımlar:

+0

Bu buydu. Başvuruda bulunduğunuz soruları görmüştüm, ancak bayt [] 'ı önce hex'e dönüştürmem gerektiğini söyleyene kadar ilgili olduğunu anlamıştı. Teşekkür ederim. – mark

İlgili konular