PowerShell में MacTripleDes एल्गोरिथ्म आउटपुट स्थिर क्यों नहीं है?


14

मैं पावरशेल में कई अलग-अलग एल्गोरिदम का उपयोग करके फ़ाइल हैश की जाँच कर रहा हूँ। जब मैं MacTripleDes का उपयोग करता हूं, तो मुझे हमेशा अलग-अलग हैश मिलते हैं। अन्य सभी, जैसे कि SHA256 या MD5 हमेशा विश्वसनीय उत्तर देते हैं। आप अपने कंप्यूटर पर समस्या को दोहराने में सक्षम हो सकते हैं:

"this is a test" | out-file test.txt
get-filehash test.txt -algorithm sha256
get-filehash test.txt -algorithm sha256
get-filehash test.txt -algorithm mactripledes
get-filehash test.txt -algorithm mactripledes

मुझे पहले दो हैश के लिए समान हैश मान मिलते हैं, लेकिन दूसरे दो हैश के लिए अलग-अलग मान हैं। क्या MacTripleDes को अलग तरह से इस्तेमाल किया जाना चाहिए?

Algorithm       Hash                                                                   Path                                                                                                                      
---------       ----                                                                   ----                                                                                                                      
SHA256          3F8CB2CDF03347329CAB0C80A6CE3B01EF3B17AF02E0F6E101FA67CE63729F51       C:\temp\test.txt                                                                                                          
SHA256          3F8CB2CDF03347329CAB0C80A6CE3B01EF3B17AF02E0F6E101FA67CE63729F51       C:\temp\test.txt                                                                                                          
MACTRIPLEDES    904D74A529C7A739                                                       C:\temp\test.txt                                                                                                          
MACTRIPLEDES    AF720778A2C878A2                                                       C:\temp\test.txt   

3
MACTripleDES एक है बंद हैशिंग एल्गोरिथ्म। Get-FileHashCmdlet एक प्रमुख पैमाना समर्थन करने के लिए प्रकट नहीं होता।
jscott

यह एक बग की तरह लगता है। तो यह टिप्पणी सबसे अच्छा जवाब प्रतीत होती है। लेकिन मैं यह नहीं देखता कि इसे कैसे चिह्नित किया जाए।
14:67 पर user6722022

जवाबों:


18

MACTripleDES Get-FileHashcmdlet द्वारा पेश किए गए अन्य एल्गोरिदम से अलग है । मुझे यकीन नहीं है कि ईमानदार होने के लिए इसे cmdlet में क्यों शामिल किया गया था। यह दूसरों के साथ फिट नहीं है, IMO।

SHA1, SHA256, MD5, RIPEMD, आदि, ये सभी नियमित हैश फ़ंक्शन हैं। वे मनमाने ढंग से लंबाई का कुछ डेटा लेते हैं और उस डेटा का प्रतिनिधित्व करने वाली निश्चित लंबाई का एक पाचन बनाते हैं। MACTripleDES अलग है, हालांकि, यह सिर्फ एक हैश एल्गोरिथ्म नहीं है। इसमें नाम में ट्रिपल डीईएस है, और 3 डीईएस एक एन्क्रिप्शन एल्गोरिथ्म है, हैशिंग एल्गोरिथम नहीं है। हैश फ़ंक्शंस और एन्क्रिप्शन फ़ंक्शंस के बीच सबसे बड़ा अंतर यह है कि एन्क्रिप्शन को एक कुंजी के साथ उलटा किया जा सकता है। हैशिंग एक तरफ़ा कार्य हैं।

और मैक संदेश प्रमाणीकरण कोड के लिए खड़ा है। यह एक कोड है जो किसी संदेश को प्रमाणित करने के लिए उपयोग किया जाता है। यह सत्यापित करने के लिए कि इसके साथ छेड़छाड़ नहीं की गई थी। एमएसी को एक संदेश से दूसरे तक अल्पकालिक या अद्वितीय होने के लिए डिज़ाइन किया गया है।

की जाँच करें निर्माता :

 public MACTripleDES() {
        KeyValue = new byte[24]; 
        Utils.StaticRandomNumberGenerator.GetBytes(KeyValue);

        // Create a TripleDES encryptor 
        des = TripleDES.Create();
        HashSizeValue = des.BlockSize; 

        m_bytesPerBlock = des.BlockSize/m_bitsPerByte;
        // By definition, MAC-CBC-3DES takes an IV=0.  C# zero-inits arrays,
        // so all we have to do here is define it. 
        des.IV = new byte[m_bytesPerBlock];
        des.Padding = PaddingMode.Zeros; 
        ...

StaticRandomNumberGenerator यादृच्छिक संख्या उत्पन्न करता है ... यादृच्छिक संख्या का अर्थ है कि परिणाम प्रत्येक रन अलग होने वाला है।


हाँ, यह यहाँ काफी बेकार है। एक उचित उपयोग में, आप या तो निर्माणकर्ता में एक ज्ञात कुंजी पास करेंगे, या KeyedHashAlgorithmऑब्जेक्ट से यादृच्छिक कुंजी प्राप्त करेंगे । लेकिन ऐसा करने का कोई तरीका नहीं है Get-FileHash...
Bob

1
यदि Get-FileHashआप उपयोग करने के लिए कुंजी निर्दिष्ट करने की अनुमति नहीं देते हैं और इसके बजाय एक यादृच्छिक कुंजी उत्पन्न करते हैं जो इसे उपयोगकर्ता के लिए कभी भी उजागर नहीं करता है, तो यह एक बग (प्रश्न के मूल शीर्षक के अनुसार) प्रतीत होता है जैसा कि आप वास्तव में उपयोग नहीं कर सकते हैं। किसी भी चीज के लिए। (ऐसा नहीं है कि मुझे समझ में आता है कि अगर आप एक मैक चाहते हैं तो आप पहली बार MACTripleDES को क्यों चुनेंगे।)
Håkan Lindqvist

@ HåkanLindqvist मैं आपकी बात देखता हूं, लेकिन यह आपकी बग की परिभाषा पर निर्भर करता है। यदि कोड वह करता है जो वह करने का इरादा था, भले ही वह कुछ भी बेकार कर दे , यह अभी भी मेरी किताब में एक बग नहीं है। यह एक डिज़ाइन परिवर्तन अनुरोध है, अर्थात "कृपया cmdlet को बदलें ताकि यह वास्तव में कुछ उपयोगी हो।" :)
रयान

@RyanRies तब भी, क्या वास्तव में यह मान लेना उचित है कि यह इरादा है? क्या कुछ भी है लेकिन कोड स्वयं और उसका व्यवहार जो इस विचार का समर्थन करता है कि MACTripleDES एल्गोरिथ्म विकल्प को Get-FileHashRNG के किसी प्रकार का होना चाहिए?
हेकैन लिंडक्विस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.