PHP: o md5 kullanılarak şifrelenmiş şifremi unuttum tıkladığında kullanıcıya orijinal şifre göndermek nasıl?

5 Cevap php

Ben projemde parolaları şifrelemek için md5 kullanıyorum.

Kullanıcı tıklama şifremi unuttum ve onun e-posta gönderdiğinde, ona O'nun parola göndermek zorunda.

Ancak şifre kullanıcının tüm ayrıntıları görebilirsiniz Bu proje yönetici olarak do.Because olmamalıdır md5.Generating yeni şifre kullanılarak şifrelenir. Yani ben Admin orijinal şifre göstermek zorunda. Yani ilk şifre çok önemlidir. Peki nasıl şifre veya ona orijinal şifre göndermek için başka bir yol şifresini çözebilir?

Şimdiden teşekkürler ...

5 Cevap

Sağlamalarının genellikle yerine sadece sağlamalarının "tek-yönlü hash" olarak adlandırılan konum neden olduğu, deşifre edilmesi için tasarlanmış değildir.

Bunun yerine, ya ...

  1. , Eskisinin yerine yeni parola hash saklamak ve kullanıcıya yeni oluşturulan şifre e-posta yeni bir şifre, hash oluşturmak.

  2. Yeni bir şifre oluşturmak, bunu karma geçici parolalar için bir alanda depolamak, ve kullanıcının bu şifre ile oturum açtığında, sonra kalıcı yeni bir parola girmek için onları teşvik edin.

  3. Üret bir nonce, bu seferlik bir alanda depolamak ve kullanıcıya yeni bir parola girmek için onlara bir sayfaya erişimi verecek seferlik ile bir bağlantı e-posta.

O kullanıcının e-posta okuma birinin düz görünümde (geçici ya da değil) bir gerçek şifre bırakmaz beri Üçüncü seçenek, tüm civarında muhtemelen iyi olduğunu ve bir seferlik kullanır beri, bu kullanıldıktan sonra bunu yapamazsınız kötü niyetli bir kullanıcı tarafından yeniden kullanılır.

Özetleme şifreler için kullanılan nedeni kötü niyetli bir kullanıcı, sadece veritabanına bakarak şifreyi belirleyecek bir biçimde saklanır engellemek için özel olduğunu.

Edit:

"So i have to show the original password to Admin."

Eğer şifrenizi karma ise, bu not possible. Genel olarak, aslında kullanıcıların büyük bir kısmı birden çok şeyler için aynı parolayı, ve bir şey yöneticisine (diyelim ki, bir şirket kullanmak eğilimindedir çünkü yöneticiler, kullanıcıların şifrelerini görmek için izin veren bir bad idea olduğunu ağı) muhtemelen birçok diğer şeyler yöneticisi (diyelim ki, bir kullanıcının online bankacılık sistemi) değildir.

MD5 is not an encryption algorithm, it is a hashing algorithm. iki aynı değildir; karma tek yönlü sadece olması tasarlanmıştır ise şifreleme, (bu nedenle tamamlayıcı terimi, "çözme") çift yönlü olması için tasarlanmıştır.

Sen yapamazsın. Kriptografik karma [1] "tersinir olmayan" olarak anılır Bunun nedeni, bunların tersine çevrilmesi olmasıdır. Şifre depolama için bunları kullanarak tüm nokta hangisi - Bir Bad Guy parola veritabanındaki ellerini alırsa, o sadece tüm şifreleri ne olduğunu bulmak için karma ters olamaz anlamına gelir.

Ben senin niyet yerine kullanıcının kendisi tarafından şifre kurtarma için daha yönetici kullanıcı (lar) için kullanıcının parolasını görüntülemek için olduğunu da düzenlemek görebilirsiniz. Bu Very Bad Idea olduğunu. Birçok kullanıcı your sistemdeki şifre görüntüleniyor other kendi hesaplarını ödün olasılığının yüksek olduğu anlamına gelir çoklu sistemler için aynı şifreyi kullanarak hatırlamak şifreleri yükünü hafifletmek için girişimi sistemleri.

Gerçek bir hikaye: 2000 yılında geri, ben sesli sistemleri üretilen bir başlangıçta bir iş aldı. Benim ilk gününde ürün için beni tanıtmak için, IT müdürü o yönetici arayüzü o kadar getirdi, ben yaptım, bana bir sesli hesabı oluşturmak vardı. Ben sesli PIN görmek için tüm ekranda görünce hemen öldü. Bu şok edici kötü güvenlik uygulama olduğunu, ancak kısmen çoğunlukla o bunu bilmiyordu bile, çünkü, he now knew the PIN for my ATM card. Yani çevresinde kötü, kötü, sadece kötü. Bunu yapmayın.


[1] MD5 karma algoritması değil, bir şifreleme algoritması. İkisi arasındaki temel fark, herhangi bir karma algoritması, şifreleme girdi bir tek-bir yazışma sahipken, (bunu tersine çevirmek değil neden olan) aynı çıktıyı üretecek girişlerinin sonsuz sayıda vardır, yani çıktı.

Şifre karma olmuşsa o zaman muhtemelen rastgele bir parola oluşturmak zorunda ve kullanıcıya o göndereceğiz. Onlar giriş yaptıktan sonra onlar daha unutulmaz bir şey için kendi şifresini değiştirebilir böylece daha sonra, Change Password ekrana götürün.

Bir hash değerinin (diğerleri) belirli bir amaç mükemmel çalışıyor eğer, geri dönüşümsüz olmasıdır.

Bir "şifremi unuttum" işlevsellik için en yaygın yolu, yeni bir şifre oluşturmak ve en kısa sürede değiştirmek için kullanıcı anlatmak için vardır.

Sadece bir dipnot düşmek gibi bu ekleme:

Eğer "unhash" MD5 hash, bir Gökkuşağı tablo o kadar bakabilirsiniz yapamaz. İşte might allow you to send the original plaintext password to the user. I am not suggesting to do that bile, bu sadece yeni bir şifre yaratmak ve bunun yerine kullanıcıya bu gönderme kıyasla kaynakların sadece bir atık çünkü.

Dan http://en.wikipedia.org/wiki/Rainbow_table:

Bir gökkuşağı tablo bir karma işlev, genellikle bir kriptografik hash fonksiyonu ile oluşturulan bir parola karma gelen düz metin parola kurtarma kullanılan bir zaman-bellek dengeyi sunan bir arama tablosudur. Ortak bir uygulama mümkün karma şifreleri karşı saldırılar yapmaktır. Bir tuz çoğu zaman olanaksız, bu saldırı daha da zorlaştırmak için karma şifreleri ile kullanılır.

Ayrıca ek notlar için aşağıdaki yorumlara bakınız.