PowerShell'de MacTripleDes algoritması çıkışı neden kararlı değil?


14

Powershell birkaç farklı algoritmalar kullanarak dosya karma kontrol ediyorum. MacTripleDes kullandığımda, her zaman farklı karmalar elde ederim. SHA256 veya MD5 gibi diğerlerinin tümü her zaman güvenilir yanıtlar verir. Sorunu kendi bilgisayarınızda çoğaltabilirsiniz:

"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

İlk iki karma için aynı karma değerlerini alıyorum, ancak ikinci iki karma için farklı değerleri alıyorum. MacTripleDes'in farklı kullanılması mı gerekiyor?

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 bir olduğunu anahtarlı karma algoritması. Get-FileHashCmdlet kilit parametre desteklemek için görünmüyor.
jscott

Kulağa bir böcek gibi geliyor. Bu yorum en iyi yanıt gibi görünüyor. Ama bunu nasıl işaretleyeceğimi görmüyorum.
user6722022

Yanıtlar:


18

MACTripleDES, Get-FileHashcmdlet tarafından sunulan diğer algoritmalardan farklıdır . Dürüst olmak gerekirse, neden cmdlet'e dahil edildiğinden emin değilim. Diğerlerine uymuyor, IMO.

SHA1, SHA256, MD5, RIPEMD, vb. Bunların hepsi normal sağlama işlevleridir. Bazı keyfi uzunluktaki verileri alırlar ve bu verileri temsil eden sabit uzunlukta bir özet oluştururlar. MACTripleDES farklıdır, çünkü bu sadece bir karma algoritma değildir. Adında TripleDES vardır ve 3DES bir karma algoritması değil, bir şifreleme algoritmasıdır. Karma işlevler ile şifreleme işlevleri arasındaki en büyük fark şifrelemenin bir anahtarla ters çevrilebilmesidir. Karmalar tek yönlü işlevlerdir.

MAC, mesaj kimlik doğrulama kodunun kısaltmasıdır. Bir iletinin kimliğini doğrulamak için kullanılan bir koddur. Kurcalanmadığını doğrulamak için. MAC'ler geçici veya bir mesajdan diğerine benzersiz olacak şekilde tasarlanmıştır.

Check out yapıcısı :

 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 rastgele sayılar üretir ... rastgele sayılar, sonucun her çalıştırmada farklı olacağı anlamına gelir.


Evet, burada oldukça işe yaramaz. Düzgün bir kullanımda, bilinen bir anahtarı yapıcıya geçirir veya rastgele anahtarı KeyedHashAlgorithmnesneden alırsınız . Ama ikisini de yapmanın bir yolu yok Get-FileHash...
Bob

1
Kullanılacak Get-FileHashanahtarı belirtmenize izin vermezse ve bunun yerine kullanıcıya asla göstermediği rastgele bir anahtar oluşturursa, aslında kullanamayacağınız bir hata (sorunun orijinal başlığına göre) gibi görünür. her şey için. (MAC istiyorsanız neden MACTripleDES'i neden ilk sırada seçeceğinizi anlamıyorum.)
Håkan Lindqvist

@ HåkanLindqvist Ne demek istediğini anlıyorum, ama bu senin hata tanımına bağlı. Kod, amaçlananı yaparsa, tamamen işe yaramaz bir şey yapsa bile , yine de kitabımda bir hata değil. Bu bir tasarım değişikliği isteğidir, yani "Lütfen cmdlet'i gerçekten yararlı bir şey yapacak şekilde değiştirin." :)
Ryan Ries

@RyanRies O zaman bile, bunun amaçlandığını varsaymak gerçekten mantıklı mı? Kod kendisi ve davranış MACTripleDES algoritma seçeneği Get-FileHashkıvrık RNG bir tür olması gerektiği fikrini destekleyen bir şey var mı ?
Håkan Lindqvist
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.