2013-01-11 41 views
5

में एचएमएसी-एसएचए 1 प्रमाणीकरण कोड की गणना कैसे करें मुझे वर्तमान में एक बड़ी समस्या का सामना करना पड़ रहा है (पर्यावरण: .NET 4.5 कोर): हमें एचएमएसी-एसएचए 1 एल्गोरिदम का उपयोग करके एक कुंजी के साथ एक संदेश की रक्षा करने की आवश्यकता है। समस्या यह है कि नामस्थान System.Security.Cryptography का HMACSHA1-वर्ग और नामस्थान स्वयं .NET 4.5 कोर में मौजूद नहीं है, यह नामस्थान केवल .NET के सामान्य संस्करण में मौजूद है।.NET 4.5 कोर

मैंने अपने उद्देश्य के लिए समकक्ष नामस्थान खोजने के कई तरीकों की कोशिश की लेकिन मुझे मिली केवल एक चीज Windows.Security.Cryptography थी जो दुख की बात है कि एचएमएसी-एन्क्रिप्शन नहीं है।

क्या किसी को पता है कि मैं अपनी समस्या का समाधान कैसे कर सकता हूं या क्या तृतीय पक्ष समाधान का उपयोग करने के लिए कोई स्वतंत्र है?

+0

स्पष्टीकरण के लिए, जब आप .NET का उल्लेख 4.5 कोर, आप .NET 4.5 का win8 api सबसेट का अर्थ है, यही कारण है कि आपके पास System.Security.Cryptography तक पहुंच नहीं है? – jbtule

उत्तर

9

Windows.Security.Cryptography नामस्थान में एचएमएसी शामिल है।

आप स्थिर OpenAlgorithm विधि बुला और निम्नलिखित कलन विधि नामों में से एक का उल्लेख करके MacAlgorithmProvider वस्तु बनाने: HMAC_MD5 HMAC_SHA1 HMAC_SHA256 HMAC_SHA384 HMAC_SHA512 AES_CMAC

http://msdn.microsoft.com/en-us/library/windows/apps/windows.security.cryptography.core.macalgorithmprovider.aspx

public static byte[] HmacSha1Sign(byte[] keyBytes, string message){ 
    var messageBytes= Encoding.UTF8.GetBytes(message); 
    MacAlgorithmProvider objMacProv = MacAlgorithmProvider.OpenAlgorithm("HMAC_SHA1"); 
    CryptographicKey hmacKey = objMacProv.CreateKey(keyBytes.AsBuffer()); 
    IBuffer buffHMAC = CryptographicEngine.Sign(hmacKey, messageBytes.AsBuffer()); 
    return buffHMAC.ToArray(); 

} 
+0

आपकी त्वरित प्रतिक्रिया के लिए धन्यवाद। यह सहायक था कि मैं CreateHMAC विधि को चलाने में सक्षम था (तकनीकी http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh802419.aspx पर वर्णित) सफलतापूर्वक लेकिन मुझे इसकी आवश्यकता कुछ है : एचएमएसी_SHA1 ("कुंजी", "आलसी कुत्ते पर त्वरित ब्राउन लोमड़ी कूदता है") = 0xde7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 क्या आप जानते हैं कि मैं इस तरह के हैश-वैल्यू को कैसे प्राप्त कर सकता हूं। अग्रिम में धन्यवाद – SwissPrime

+1

हां, अद्यतन उत्तर। – jbtule