我一直在閱讀本文,內容來自MSDN,Rfc2898DeriveBytes。以下是他們提供的示例加密代碼。如何在本地正確存儲密碼
string pwd1 = passwordargs[0];
// Create a byte array to hold the random value.
byte[] salt1 = new byte[8];
using (RNGCryptoServiceProvider rngCsp = ne RNGCryptoServiceProvider())
{
// Fill the array with a random value.
rngCsp.GetBytes(salt1);
}
//data1 can be a string or contents of a file.
string data1 = "Some test data";
//The default iteration count is 1000 so the two methods use the same iteration count.
int myIterations = 1000;
try
{
Rfc2898DeriveBytes k1 = new Rfc2898DeriveBytes(pwd1,salt1,myIterations);
Rfc2898DeriveBytes k2 = new Rfc2898DeriveBytes(pwd1, salt1);
// Encrypt the data.
TripleDES encAlg = TripleDES.Create();
encAlg.Key = k1.GetBytes(16);
MemoryStream encryptionStream = new MemoryStream();
CryptoStream encrypt = newCryptoStream(encryptionStream, encAlg.CreateEncryptor(), CryptoStreamMode.Write);
byte[] utfD1 = new System.Text.UTF8Encoding(false).GetBytes(data1);
encrypt.Write(utfD1, 0, utfD1.Length);
encrypt.FlushFinalBlock();
encrypt.Close();
byte[] edata1 = encryptionStream.ToArray();
k1.Reset();
我的問題是,我將如何正確讀/寫散列數據/從文本文件?
我的主要目標是做這個developer正在做的事情。我需要在本地存儲密碼。當我的應用程序提示用戶輸入密碼時,用戶將輸入密碼,然後我的應用程序將從文本文件中讀取並驗證用戶輸入的密碼是否確實正確。我該怎麼去做呢?
它只是文本。散列用戶的pw,從文件讀取存儲的散列,比較兩個散列。如果他們是平等的,那麼這是正確的指數。 –
@MarcB - 你能舉一個密碼哈希的例子嗎? –
你爲什麼要加密密碼?密碼通常是散列的,而不是加密的。散列和加密不是一回事。 – Tim