SHA dosya tekrarını kontrol etmek için yeterli midir?

3 Cevap php

Eğer kendi dosya yüklemek ve daha sonra almak için kendi linki arkadaşlarınıza göndermek için insanlar için bir dosya barındırma sitesi yapmak istedim varsayalım ve biz bunları saklamak dosyaları çoğaltılır sigortalamak istiyorum, PHP'nin sha1_file görev için yeterince iyi mi? Yerine md5_file kullanmak için herhangi bir neden var mı?

Önyüzde için, bir veritabanında orijinal dosya ismi mağaza ile örtülü olacak ama bu orijinal posterle ilgili bir şey ortaya olsaydı bazı ek endişeleri olurdu. Bir dosya gibi onunla herhangi bir meta bilgileri devralır mı son düzenleme ya bunu kim gönderdi veya bu malzeme dosya sistemine dayanır?

Ayrıca, gökkuşağı tablo saldırı konusunda güvenlik bu hiçbir şey demek ve karma daha sonra bir sağlama olarak kullanılabilecek beri anlamsız bir tuz kullanıyor?

Son bir şey, ölçeklenebilirlik? Başlangıçta, sadece küçük dosyalara sonunda büyük ama megabaytlık bir çift için kullanılacak gidiyor ...

Edit 1: karma noktası belirsizliği yaratmak için değil, dosya tekrarından kaçınmak için öncelikle.

3 Cevap

Ykaganovich cevabı benim yorumum başı olarak, sha1 (şaşırtıcı) md5 biraz daha hızlıdır.

Sorunun açıklamasından, güvenli bir karma oluşturmak için çalışıyoruz değil - sadece bir büyük ad dosyayı gizlemek - tuz / gökkuşağı tabloları harf kullanımı alakasız olduğu - sadece göz sahte çarpışma olasılığı olan ( 2 farklı dosya) aynı karma vermek nerede. Md5 ile bu olay olasılığı çok, çok uzak. Hatta daha uzak sha1 birlikte. Eğer 2 bağımsız kullanıcıların size siteye aynı warez yüklemek ne olur düşünmek gerekiyor ancak. Kim dosyanın sahibi?

Sadece yeterince uzun bir rasgele değer üretmek - Aslında, bir karma kullanmak için hiç bir nedeni gibi görünmüyor.

C.

Hem ince olmalıdır. sha1 da muhtemelen :) md5 kullanmanız gerektiği anlamına gelir ki, yavaş demektir md5 daha güvenli bir hash fonksiyonudur. Hala (insanların sitenize yüklemek için karar ne hakkında varsayımlar yapmayın) çok küçük dosyalar halinde şifresiz / gökkuşağı saldırıları önlemek için tuz kullanmak istiyorum. Performans farkı önemsiz olacaktır. Hala sürece tuz bildiğiniz gibi bir sağlama olarak kullanabilirsiniz.

Ölçeklenebilirlik açısından, ben büyük olasılıkla, IO-bağlı CPU bağlı değil, bu yüzden esp sağlama hesaplanmasında size büyük yükü vereceğini sanmıyorum olacak olacağım tahmin ediyorum. Bu tarih varlık olarak dere üzerinde yaparsanız.

SHA herhangi bir "normal" bir ortamda sadece iyi yapmalıdır. : "Git Magic" yazarı diyecek - Bu Ben Lynn ne rağmen,

A.1. SHA1 Weaknesses As time passes, cryptographers discover more and more SHA1 weaknesses. Already, finding hash collisions is feasible for well-funded organizations. Within years, perhaps even a typical PC will have enough computing power to silently corrupt a Git repository. Hopefully Git will migrate to a better hash function before further research destroys SHA1.

Her zaman SHA256, hatta daha uzun olan diğerlerini kontrol edebilirsiniz. MD5 çarpışma bulma SHA1 ile daha kolaydır.