散列加密
① 一個安全的散列演算法需要具備哪些屬性
一個安全的散列演算法需要具備的屬性:
1、能對抗野蠻的攻擊,能夠抵禦窮舉法的攻勢。
2、具有無限定義域,如任意長度的位元組字元串和有限的值域或者固定長度的比特串。
3、具備應用的多樣性,對於給定的散列值,沒有實用的方法可以計算出一個原始輸入,也就是說很難偽造。
4、能夠因為環境因素的變化,如機器配置或者IP地址的改變而有變動。以保證源文件的安全性。
5、方便錯誤監測和修復函數。當散列函數被用於校驗和的時候可以用相對較短的散列值來驗證任意長度的數據是否被更改過。
6、安全散列演算法接受的輸入文檔小於2的64次方 位,產生160位的報文摘要。該演算法實際的目標使得找出一個能夠匹配給定的散列值的文本是不可能的計算。
② 以下這段java代碼 hexSHA1散列加密解密,轉成PHP代碼,該如何寫
java 的加密解密,換成PHP的加密解密就好了呀
③ 加密方式有幾種
加密方式的種類:
1、MD5
一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於1992年公開,用以取代MD4演算法。這套演算法的程序在 RFC 1321 標准中被加以規范。
2、對稱加密
對稱加密採用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,這種加密方法稱為對稱加密,也稱為單密鑰加密。
3、非對稱加密
與對稱加密演算法不同,非對稱加密演算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密。
如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱加密演算法。
(3)散列加密擴展閱讀
非對稱加密工作過程
1、乙方生成一對密鑰(公鑰和私鑰)並將公鑰向其它方公開。
2、得到該公鑰的甲方使用該密鑰對機密信息進行加密後再發送給乙方。
3、乙方再用自己保存的另一把專用密鑰(私鑰)對加密後的信息進行解密。乙方只能用其專用密鑰(私鑰)解密由對應的公鑰加密後的信息。
在傳輸過程中,即使攻擊者截獲了傳輸的密文,並得到了乙的公鑰,也無法破解密文,因為只有乙的私鑰才能解密密文。
同樣,如果乙要回復加密信息給甲,那麼需要甲先公布甲的公鑰給乙用於加密,甲自己保存甲的私鑰用於解密。
④ 哈希加密演算法
MD5即Message-Digest Algorithm 5(信息摘要演算法5),是計算機廣泛使用的散列演算法之一。經MD2、MD3和MD4發展而來,誕生於20世紀90年代初。用於確保信息傳輸完整一致。雖然已被破解,但仍然具有較好的安全性,加之可以免費使用,所以仍廣泛運用於數字簽名、文件完整性驗證以及口令加密等領域。
演算法原理:
散列演算法得到的結果位數是有限的,比如MD5演算法計算出的結果字長為128位,意味著只要我們窮舉2^128次,就肯定能得到一組碰撞,下面讓我們來看看一個真實的碰撞案例。我們之所以說MD5過時,是因為它在某些時候已經很難表現出散列演算法的某些優勢——比如在應對文件的微小修改時,散列演算法得到的指紋結果應當有顯著的不同,而下面的程序說明了MD5並不能實現這一點。
而諸如此類的碰撞案例還有很多,上面只是原始文件相對較小的一個例子。事實上現在我們用智能手機只要數秒就能找到MD5的一個碰撞案例,因此,MD5在數年前就已經不被推薦作為應用中的散列演算法方案,取代它的是SHA家族演算法,也就是安全散列演算法(Secure Hash Algorithm,縮寫為SHA)。
SHA實際包括有一系列演算法,分別是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。而我們所說的SHA2實際是對後面4中的統稱。各種SHA演算法的數據比較如下表,其中的長度單位均為位:
MD5和SHA1,它們都有4個邏輯函數,而在SHA2的一系列演算法中都採用了6個邏輯函數。
以SHA-1為例,演算法包括有如下的處理過程:
和MD5處理輸入方式相同
經過添加位數處理的明文,其長度正好為512位的整數倍,然後按512位的長度進行分組,可以得到一定數量的明文分組,我們用Y 0 ,Y 1 ,……Y N-1 表示這些明文分組。對於每一個明文分組,都要重復反復的處理,這些與MD5都是相同的。
而對於每個512位的明文分組,SHA1將其再分成16份更小的明文分組,稱為子明文分組,每個子明文分組為32位,我們且使用M[t](t= 0, 1,……15)來表示這16個子明文分組。然後需要將這16個子明文分組擴充到80個子明文分組,我們將其記為W[t](t= 0, 1,……79),擴充的具體方法是:當0≤t≤15時,Wt = Mt;當16≤t≤79時,Wt = ( W t-3 ⊕ W t-8 ⊕ W t-14 ⊕ W t-16 ) <<< 1,從而得到80個子明文分組。
所謂初始化緩存就是為鏈接變數賦初值。前面我們實現MD5演算法時,說過由於摘要是128位,以32位為計算單位,所以需要4個鏈接變數。同樣SHA-1採用160位的信息摘要,也以32位為計算長度,就需要5個鏈接變數。我們記為A、B、C、D、E。其初始賦值分別為:A = 0x67452301、B = 0xEFCDAB89、C = 0x98BADCFE、D = 0x10325476、E = 0xC3D2E1F0。
如果我們對比前面說過的MD5演算法就會發現,前4個鏈接變數的初始值是一樣的,因為它們本來就是同源的。
經過前面的准備,接下來就是計算信息摘要了。SHA1有4輪運算,每一輪包括20個步驟,一共80步,最終產生160位的信息摘要,這160位的摘要存放在5個32位的鏈接變數中。
在SHA1的4論運算中,雖然進行的就具體操作函數不同,但邏輯過程卻是一致的。首先,定義5個變數,假設為H0、H1、H2、H3、H4,對其分別進行如下操作:
(A)、將A左移5為與 函數的結果求和,再與對應的子明文分組、E以及計算常數求和後的結果賦予H0。
(B)、將A的值賦予H1。
(C)、將B左移30位,並賦予H2。
(D)、將C的值賦予H3。
(E)、將D的值賦予H4。
(F)、最後將H0、H1、H2、H3、H4的值分別賦予A、B、C、D
這一過程表示如下:
而在4輪80步的計算中使用到的函數和固定常數如下表所示:
經過4輪80步計算後得到的結果,再與各鏈接變數的初始值求和,就得到了我們最終的信息摘要。而對於有多個明文分組的,則將前面所得到的結果作為初始值進行下一明文分組的計算,最終計算全部的明文分組就得到了最終的結果。
⑤ 64位散列可能是哪些加密演算法的結果
這個不確定,如果不加以修改的話,可能是SHA演算法。MD5原生的是32位,CRC是8位。 但是如果可以對Hash結果進行修改再編輯,那就很難說了,
比如MD5雜湊兩次就可以是64位,SHA128取中間64位那就是64位了。
希望回答能給你帶來幫助~
如果滿意,請採納,如還有疑問,可繼續追問!
您也可以向我們團隊發出請求,會有更專業的人來為您解答!
⑥ VB.NET開發的軟體,大家一般都是怎麼加密的
網上有很多專業的加密教程
最適合小開發者的軟體加密方式就是下面這個
獲取硬體信息和個人注冊時的姓名手機號等一系列信息,通過預先設定好的加密函數進行散列加密,生成一個只有本人本機能使用的序列號,軟體正版授權的時候用同樣的方式生成序列號進行比對,一樣則通過
⑦ 散列函數有哪些特性使之能應用在數字簽名中
所有散列函數都有如下一個基本特性:如果兩個散列值是不相同的(根據同一函數),那麼這兩個散列值的原始輸入也是不相同的.這個特性是散列函數具有確定性的結果.但另一方面,散列函數的輸入和輸出不是一一對應的,如果兩個散列值相同,兩個輸入值很可能是相同的,但並不能絕對肯定二者一定相等.輸入一些數據計算出散列值,然後部分改變輸入值,一個具有強混淆特性的散列函數會產生一個完全不同的散列值.
典型的散列函數都有無限定義域,比如任意長度的位元組字元串,和有限的值域,比如固定長度的比特串.在某些情況下,散列函數可以設計成具有相同大小的定義域和值域間的一一對應.一一對應的散列函數也稱為排列.可逆性可以通過使用一系列的對於輸入值的可逆「混合」運算而得到。構造散列函數的目標是使散列地址盡可能均勻分布在散列空間上,同時使計算盡可能簡單,以節省計算時間。 以關鍵字K本身或關鍵字加上某個數值常量C作為散列地址的方法,對應的散列函數:h(K)=K+C單向散列函數是進行數據加密/編碼的一種演算法
單向散列函數一般用於產生消息摘要,密鑰加密等,常見的有:
MD5(Message Digest Algorithm 5):是RSA數據安全公司開發的一種單向散列演算法,MD5被廣泛使用,可以用來把不同長度的數據塊進行暗碼運算成一個128位的數值;
⑧ 修改WiFi密碼輸入的用戶名和密碼分別是什麼
路由器的默認IP地址、用戶名和密碼一般就印在路由器底部的貼紙上,IP地址通常都是192.168.1.1,用戶名和密碼則是admin和admin或admin和guest或者guest和guest。
如果路由器的默認IP地址、用戶名和密碼被修改了,就需要找知道的人詢問或查找以前修改時作的記錄,如果找不到記錄就只能按RESET鍵3-6秒恢復出廠設置了。
需要注意的是,如果恢復了路由器的出廠設置,那麼路由器原先的設置,包括上網撥號、無線網參數等設置都將被刪除,需要重新設置,如果自己不熟悉路由器設置的話請謹慎。
⑨ 關於C#,什麼是哈希代碼
如果是問object的GetHashCode方法,那哈希代碼只是一個確定兩個對象相等的數字,本身並沒有什麼意義,當想確定兩個對象相等時,確保這兩個對象的GetHashCode方法返回結果一樣就行了。