加密撒鹽
1. ASP.NET實現對輸入的密碼用MD5+鹽,並加密
public partial class _Default : System.Web.UI.Page
{
public bool IsMd5
{
get
{
//添加命名空間 using System.Configuration;
return ConfigurationManager.AppSettings["Md5"] == "1";
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (IsMd5)
{
//添加命名空間 using System.Web.Security;
string MD5 = FormsAuthentication.("被加密的欄位", "MD5"); // SHA1 MD5
}
}
}
---------------------web.config----------------------------------
<appSettings>
<!--加密, 1:代表是; 0:代表不是-->
<add key="Md5" value="1"/>
</appSettings>
2. 什麼是哈希演算法
就是空間映射函數,例如,全體的長整數的取值作為一個取值空間,映射到全部的位元組整數的取值的空間,這個映射函數就是HASH函數。通常這種映射函數是從一個非常大的取值空間映射到一個非常小的取值空間,由於不是一對一的映射,HASH函數轉換後不可逆,即不可能通過逆操作和HASH值還原出原始的值,受到計算能力限制(注意,不是邏輯上不可能,前面的不可能是邏輯上的)而且也無法還原出所有可能的全部原始值。HASH函數運用在字典表等需要快速查找的數據結構中,他的計算復雜度幾乎是O(1),不會隨著數據量增加而增加。另外一種用途就是文件簽名,文件內容很多,將文件內容通過HASH函數處理後得到一個HASH值,驗證這個文件是否被修改過,只需要把文件內容用同樣的HASH函數處理後得到HASH值再比對和文件一起傳送的HASH值即可,如不公開HASH演算法,那麼信道是無法篡改文件內容的時候篡改文件HASH值,一般應用的時候,HASH演算法是公開的,這時候會用一個非對稱加密演算法加密一下這個HASH值,這樣即便能夠計算HASH值,但沒有加密密鑰依然無法篡改加密後HASH值。這種演算法用途很廣泛,用在電子簽名中。HASH演算法也可進行破解,這種破解不是傳統意義上的解密,而是按照已有的HASH值構造出能夠計算出相同HASH值的其他原文,從而妨礙原文的不可篡改性的驗證,俗稱找碰撞。這種碰撞對現有的電子簽名危害並不嚴重,主要是要能夠構造出有意義的原文才有價值,否則就是構造了一個完全不可識別的原文罷了,接收系統要麼無法處理報錯,要麼人工處理的時候發現完全不可讀。理論上我們終於找到了在可計算時間內發現碰撞的演算法,推算了HASH演算法的逆操作的時間復雜度大概的范圍。HASH演算法的另外一個很廣泛的用途,就是很多程序員都會使用的在資料庫中保存用戶密碼的演算法,通常不會直接保存用戶密碼(這樣DBA就能看到用戶密碼啦,好危險啊),而是保存密碼的HASH值,驗證的時候,用相同的HASH函數計算用戶輸入的密碼得到計算HASH值然後比對資料庫中存儲的HASH值是否一致,從而完成驗證。由於用戶的密碼的一樣的可能性是很高的,防止DBA猜測用戶密碼,我們還會用一種俗稱「撒鹽」的過程,就是計算密碼的HASH值之前,把密碼和另外一個會比較發散的數據拼接,通常我們會用用戶創建時間的毫秒部分。這樣計算的HASH值不大會都是一樣的,會很發散。最後,作為一個老程序員,我會把用戶的HASH值保存好,然後把我自己密碼的HASH值保存到資料庫裡面,然後用我自己的密碼和其他用戶的用戶名去登錄,然後再改回來解決我看不到用戶密碼而又要「偷窺」用戶的需要。最大的好處是,資料庫泄露後,得到用戶資料庫的黑客看著一大堆HASH值會翻白眼。
3. 關於加密軟體truecrypt的一些問題
TrueCrypt是著名的開源加密軟體,採用aes演算法加密,可以加密整個硬碟,硬碟分區,虛擬文件為分區,nod32最新升級ID,光碟,u盤等.軟體加密速度快,在很多電腦上超過硬碟讀寫速度,佔用系統資源小,感覺不到存在,加密強度高,用Hash演算法都是重復2000次.加密安全問題如下:
加密方法:
由於TrueCrypt加密後信息並沒有記憶採用何種演算法,TrueCrypt只能在解密時,用輸入的密碼對每種演算法窮舉直到解密.當*** 者知道對稱加密的演算法時,可以通過電腦運算把各個密碼加密指定信息的密文存儲在類似資料庫存儲介質上,需要解密時,nod32免費,只要檢索資料庫,很快就可以找到密碼,網上就有這樣的md5解密資料庫.對稱密碼 *** 只要找到指定信息的密文就可以了.但TrueCrypt在加密時採用撒鹽的加密因子,使得 *** 中無法通過空間換時間的 *** 方法無效.
加密後網上流傳竊取密碼方法與防範方法:
一種方法是,使用間諜程序在TrueCrypt啟動之前啟動,記錄密碼.這種方法在網上一篇名為《邪惡女傭破除硬碟全局加密》中有詳細介紹.對付這種間諜程序,可用如下方法.電腦加cmos開機密碼防止物理上接觸電腦.修改啟動屏幕的自定義信息,如果和原先不一樣,說明載入區被修改過.進入系統後用軟體比較引導區,這些可以解決這個問題.
另一種是,獻身門,開機後在內存中讀取,包括軟體讀取和冷凍內存技術.可以看到網上有《最新研究顯示冷凍內存即可 *** 加密資料》這個文章.冷凍內存只要保證電腦的人走關機就沒事,不要處於待機狀況就可以了,如果採用加密內存條就沒有這方面的問題,目前也只是傳說可以 *** ,不實用.軟體讀取目前只能用防火牆來擋.在驅動內存中緩存密碼,使用類似防火牆功能的軟體防止直接訪問這塊物理內存,除了TrueCrypt,其實只要做好反間諜軟體就沒什麼問題.以後要能採用類似微軟的bitlocker則把密碼放在tpm安全晶元中,用"密封"密鑰的技術就很安全了.當然你可以自行修改源碼達到這一點,這也許是開源的最大好處.如果一直把密碼存儲放在 tpm中,這又會帶來前面的冷凍內存問題.只有在解密後放入tpm保護,不能持久化到 tpm中,像放在內存一樣.
其他方法:
當有人把刀架在你脖子上逼你說密碼怎麼辦?
這一點TrueCrypt想到了,NOD32自動激活器,用隱藏加密卷或隱形操作系統來解決這個問題.隱藏加密卷TrueCrypt說明如下:
可能在某些情況,有些人會迫使您告訴它們加密卷密碼.有很多情況您可能無法拒絕這種要求(例如,存在暴力因素).使用這種隱藏加密卷可以解決此類問題,而不須泄漏隱藏加密卷密碼."
隱形操作系統如下:
可能存在某些人強迫您解密操作系統的情況.在很多情況下您可能無法拒絕泄漏密碼(例如,被詐騙).如果您選擇了這個選項,您將會創建一個沒有任何手段可以識別的隱形操作系統(當然這得需要您遵循一定的步驟創建).因此,您一定不要解密或者泄漏隱形操作系統的密碼(譯者注:這是因為隱形操作系統的存在只有你才知道,你不說沒有任何手段可以檢測到)
假設 *** 者可不是一般的人,他可以通過硬碟磁場殘留偵探高科技來恢復加密系統前的數據,怎麼辦?
這一點TrueCrypt也想到了,只要擦除原來數據次數夠多就可以了,nod32 24位激活碼,看看TrueCrypt說明:
在某些存儲介質上,當數據被其他數據覆蓋後,也仍有可能通過磁力顯微技術恢復出來被覆蓋的數據.這也包括一些被加密方式覆蓋的數據(這在TrueCrypt加密那些原來沒有加密的系統分區或系統驅動器時可能會發生).根據一些政府機構發布的文獻,通過使用仿隨機或非隨機數據覆蓋一定次數可以阻止數據恢復或使數據恢復變的異常困難.因此,如果您確認攻擊者可能會使用類似磁力顯微技術恢復您的加密數據,您可以選擇下拉列表中幾種擦除演算法中的一種(已經存在的數據不會丟失).需要說明的是在分區/驅動器加密後不需要再執行擦除操作.當分區/驅動器被完全加密後,不會再有非加密數據向其寫入.寫入加密卷中的任何數據都是在內存中即時加密,然後這些已加密數據才會被寫入到磁碟.
不過上面的竊取密碼方法只有軟體竊取現實可行,但需要一定的條件,如在指定電腦上運行指定程序,但目前也沒有這方面的軟體.這個方法也是很好預防的.但如果電腦不在操作當中,無法從內存獲取密碼,想*** 是幾乎不可能的.
TrueCrypt對一般使用者已經很安全,設置一下啟動系統cmos密碼更安全.網上傳言有FBI後門,nod32免費激活碼,說編譯後的程序和發布的程序有5%的差異,無法知道是真是假.如果在演算法上有後門,這個就高深了.另外後門可能是上傳用戶的密碼,或文件概要,這個只要控制軟體不聯網就可以了.如果自已用下載的源碼編譯出來,應該沒有這個問題.因為源碼是公開的,沒辦法做手腳.如果用封閉商業軟體,就更有可能有這方面的問題.總之,正確使用TrueCrypt安全性很高.
4. 資料庫編程中密碼鹽起什麼作用
上面應該是md5方式加密,一般來說有個秘鑰,相當於一個用於計算的字元串,比如說aa,那麼你的密碼123會用md5的方式和秘鑰aa進行計算,得到一個加密後的字元串。過程大概是這樣。秘鑰就是為了讓別人也用md5的方式給你解密的時候,猜不到秘鑰是多少,也不好解密。
5. php通過sha1加鹽值加密的密碼怎麼破解
目前沒有高效且簡單到一試就靈方法..
這等於在理論上對全美的密碼系統挑戰...
而有這方法的會去拿很大筆的科技懸賞....
而你最多說句謝謝..
6. 請教一下QQ登錄中對密碼的加密鹽值是怎麼處理的,是md5 64位加密,但不知道鹽值是怎麼弄的。
一般web中sha,md5 加密演算法,鹽值為登錄名: password=DigestUtils.md5Hex(name+pwd);
7. md5 為什麼 加鹽
原因:鹽被稱作「Salt值」,這個值是由系統隨機生成的,並且只有系統知道。即便兩個用戶使用了同一個密碼,由於系統為它們生成的salt值不同,散列值也是不同的。
MD5演算法的原理可簡要的敘述為:MD5碼以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。
(7)加密撒鹽擴展閱讀:
MD5相對MD4所作的改進:
1、增加了第四輪。
2、每一步均有唯一的加法常數。
3、減弱第二輪中函數的對稱性。
4、第一步加上了上一步的結果,這將引起更快的雪崩效應(就是對明文或者密鑰改變 1bit 都會引起密文的巨大不同)。
5、改變了第二輪和第三輪中訪問消息子分組的次序,使其更不相似。
6、近似優化了每一輪中的循環左移位移量以實現更快的雪崩效應,各輪的位移量互不相同。
8. 求教nodejs怎麼對密碼進行加鹽的hash加密
以前java項目最近打算用node.js重寫,但是加密這里實在沒搞定。java中加密是:1024次加鹽sha-1加密,
一個例子:salt:47998d63768aa877,密文:,明文:yunstudio2013
下面是java代碼:
private static byte[] digest(byte[] input, String algorithm, byte[] salt, int iterations) {
try {
MessageDigest digest = MessageDigest.getInstance(algorithm);
if (salt != null) {
digest.update(salt);
}
byte[] result = digest.digest(input);
for (int i = 1; i < iterations; i++) {
digest.reset();
result = digest.digest(result);
}
return result;
} catch (GeneralSecurityException e) {
throw Exceptions.unchecked(e);
}
}
我在js裡面是這么乾的,但是結果一直不對,代碼如下:
//
var hash = crypto.createHmac("sha1", 「47998d63768aa877」).update(「yunstudio2013」).digest(「hex」);
for (var i = 1; i < 1024; i++) {
hash = crypto.createHmac("sha1", 「47998d63768aa877」).update(hash).digest(「hex」);
console.log(hash);
}
9. MD5加鹽 加密密碼,客戶端發給後台的是明文嗎
一般md5加密都是不可逆的,所以都是講明文進行加密後對比資料庫存儲的密文