2012-03-11 37 views
7

क्या कोई मुझे बता सकता है कि अमेज़ॅन hmac-sha1/sha256 हैश का बेस 64 क्यों चाहते हैं?बेस 64 एक sha1/sha256 हैश क्यों?

http://docs.amazonwebservices.com/AmazonSimpleDB/latest/DeveloperGuide/HMACAuth.html

मुझे पता है कि बेस 64 ascii लेकिन SHA1/SHA256 में द्विआधारी तारीख प्रतिनिधित्व करने के लिए है पहले से ही ascii है - मैं अपने ही हेक्स मतलब है।

धन्यवाद

टीमो

उत्तर

16

उन हैश नहीं ASCII-कर रहे हैं कारण आप हेक्स अंक देखना है, क्योंकि सॉफ्टवेयर आप उन्हें उत्पन्न करने के लिए उपयोग करें डाइजेस्ट की बाइनरी उत्पादन लेता है और इसके बारे में एक ASCII स्ट्रिंग में बदल जाता है हेक्स अंक।

उदाहरण के लिए, एमडी 5 डाइजेस्ट 16 बाइट्स की सरणी भर देगा। आप इसे 32 अक्षरों की स्ट्रिंग के रूप में भी प्रस्तुत कर सकते हैं, लेकिन पाचन का सबसे बुनियादी रूप अभी भी बाइट्स की सरणी है।

जब आप हेक्स स्ट्रिंग में बाइट्स की सरणी बदलते हैं, तो आपको डेटा के प्रत्येक 4 बिट्स का प्रतिनिधित्व करने के लिए 8 बिट्स (एक पूर्ण वर्ण) की आवश्यकता होती है। यद्यपि इसे अक्सर इस तरह से नहीं कहा जाता है, आप कह सकते हैं कि यह "बेस 16" एन्कोडिंग का उपयोग करता है, क्योंकि आप एक समय में 4 बिट्स पकड़ रहे हैं और उन्हें 16-वर्ण वर्णमाला में मैप कर रहे हैं।

दूसरी ओर, बेस 64, एक समय में 6 बिट्स पकड़ता है और उन्हें 64-वर्ण वर्णमाला में मानचित्रित करता है। इसका मतलब है कि डेटा के हर 6 बिट्स का प्रतिनिधित्व करने के लिए आपको 8 बिट्स (दोबारा, एक पूर्ण चरित्र) की आवश्यकता है, जिसमें आधार 16 के आधे बर्बाद बिट्स हैं। बेस 16-एन्कोडेड स्ट्रिंग हमेशा मूल के रूप में दोगुनी होगी; बेस 64-एन्कोडेड स्ट्रिंग केवल चार तिहाई बड़ी होगी। एक SHA256 हैश के लिए, base16 64 बाइट्स करता है, लेकिन, बाइट्स, हेक्स, और बेस 64 नमूने नीचे एक ही बाइट्स सांकेतिक शब्दों में बदलना बेस 64 उदाहरण के लिए लगभग 43

+0

जो मेरे प्रश्न का उत्तर देता है। धन्यवाद! – tuna

+0

@zneak अंतरिक्ष हैश को हैश पर बेस 64 एन्कोडिंग का उपयोग करने का कारण है। यह नहीं है कि अगर हमें यह हैश भेजने की आवश्यकता है तो हमें उस हैश को पाठ के रूप में प्रस्तुत करने की आवश्यकता है और बेस 64 बाइनरी डेटा को सेट पर सीमित करके करता है 64 आम तौर पर अधिकांश आम एन्कोडिंग से पात्रों को ओवरलैप कर रहे हैं? – crackerplace

+0

@zneak मेरा मतलब हैश को किसी भी कंप्यूटर पर एक प्रस्तुत करने योग्य फ़ॉर्म देकर। – crackerplace

4

करता है:

  • बाइट्स: 243 48 133 140 73 157 28 136 11 29 189 101 194 101 116 64 172 227 220 78
  • हेक्स : f330858c499d1c880b1dbd65c2657440ace3dc4e
  • बेस 64: 8zCFjEmdHIgLHb1lwmV0QKzj3E4=

यह केवल इतना है कि एडब्ल्यूएस के मूल्यों को बेस 64 एन्कोडेड होना आवश्यक है।

+0

ठीक है, लेकिन हेक्स के बजाय बेस 64 का उपयोग करने के कोई लाभ हैं? मेरा मतलब है अमेज़ॅन बेस 64 का उपयोग क्यों करता है और हेक्स नहीं? – tuna

+1

बेस 64 कम ASCII वर्णों में समान मानों को एन्कोड करता है।और क्योंकि वे सार्वजनिक कुंजी हस्ताक्षर भी उपयोग करते हैं जो आमतौर पर बेस अनुरोध के साथ अपने अनुरोध में एन्कोड किए जाते हैं, उन्होंने सोचा होगा कि सभी मानों के लिए एक एन्कोडिंग का उपयोग करना चाहिए। –