導航:首頁 > 文檔加密 > 單向加密函數

單向加密函數

發布時間:2022-05-28 02:27:48

⑴ 單向函數是什麼.

4)單向散列函數介紹(Hash Function,哈希函數):
將任意長度的消息M映射/換算成固定長度值h(散列值,或消息摘要MD, Message Digest),最大的特點為其具有單向性。
h=H(M)
Hash函數用於消息認證(或身份認證)以及數字簽名。

特性:
(1) 給定M,可算出h.
(2) 給定h,根據H(M)=h反推出M是非常困難的。
(3) 給定M,要找到另外一個消息M*,使其滿足H(M*)=H(M)=h 是非常困難的。

注 (見 參考E,p75):
-從理論上說,有很多消息能生成相同的消息摘要。因為消息的長度是任意的,而摘要的長度是固定的。
-對於固定1000 bit的消息和固定128 bit的摘要,平均來說,有2872個消息與之對應,測試似乎不可能成功。
-對於一個128 bit的消息摘要演算法,大約需要嘗試2128個(長短不一的)消息,才能找到一個消息摘要與給定的摘要數值相吻合(作為攻擊,當然該消息可為經篡改後的消息)。註:這里是用無數次的「嘗試」,而非簡單從h反推出M。
-對於一個128 bit的消息摘要演算法,需要嘗試264個消息才能找到兩個具有相同摘要的消息。
-為什麼將消息摘要定為128 bit? 因為消息摘要為m bit,任何人想要得到兩個具有相同摘要的消息,大約需要嘗試2m/2個消息。 若m=64, 則需檢查232個消息,這在計算上是可行的。所以使m=128, 檢查264個消息目前在計算上是不可行的。

應用舉例講解:
(i) 存儲於銀行計算機內的用戶密碼採用散列值,用於保密。
(ii)Alice要Bob寫一份關於解僱Fred的報告,而Bob是Fred的朋友,想做「雙面人」。
(iii)為文檔和程序生成「指紋」或「DNA」。

在實際應用中,Hash函數是基於壓縮函數的。

(RefC_p42_Hash函數)

給定任意長度的消息,Hash函數輸出長度為m的散列值(即消息摘要)。
壓倒函數的輸入為
(1) 明文消息分組 Mi。
(2) 前一壓縮數據的輸出 CVi-1 (Compressed Vector)。
註:
-第一個壓縮函數的輸入M1為和IV (Initial Vector)。
-壓縮函數的輸出值為前所有分組的散列值;最後一個分組的散列值即為整個消息的散列值,即消息摘要MD。

Hash函數演算法介紹: MD5演算法 和 SHA-1演算法。

MD5演算法:
對任意長度的消息M作為輸入,產生一個128 bit的散列值/消息摘要。

(RefC_p43_MD5演算法)
演算法包括5個步驟:
(1) 附加填充位:填充消息,使消息的長度位一個比512倍數小64位的數,填充位數為1~512。填充方法:原消息的後面第一位填1,其餘填0。(例如:設消息為「abc」。)

(2) 附加長度:將原消息的64位表示附加在填充後的消息後面,這時處理後的消息的長度恰好為512的整數倍。(續上例)
若原消息的長度大於264時,則用原消息長度mod264的64位表示附加在填充後的消息後面。

(3) 初始化MD的緩沖區:緩沖區共有4個32 bit的寄存器 A、B、C、D, 各寄存器的初始值為
A: 01 23 45 67
B: 89 ab cd ef
C: fe dc ba 98
D: 76 54 32 10

(4) 按512 bit的消息分組處理輸入消息:該步為MD5的主循環,包括4輪。

(RefC_p44_主循環處理)
每個循環均以當前正在處理的512 bit的分組Yq和128 bit的緩沖值ABCD為輸入,然後更新緩沖內容。
以上4輪操作類似,每輪進行16次操作,各輪操作過程見下圖。

(RefC_p44_某輪執行過程)

每一輪的非線性函數不同,4次所用的非線性函數分別記為 F、G、H、I。
F(X,Y,Z)=(X Y) ((~X) Z)
G(X,Y,Z)=(X Z) ( Y (~Z))
H(X,Y,Z)=X Y Z
I(X,Y,Z)=Y (X (~Z))

其中: :邏輯按位與 :邏輯按位或
~:邏輯按位反 :邏輯按位異或
註:T表:T[i]=232abs(sin(i))

安全散列函數演算法(SHA, Secure Hash Algorithm):
SHA由美國NIST(國家標准與技術研究所)和NSA(國家標准協會)設計,用於數字簽名(DS)。
SHA-1為SHA的修改版,於1995年發布。
SHA-1產生消息摘要的過程與MD5類似,但輸入為度小於232 bit的消息,而輸出為160 bit的散列值(即消息摘要MD),消息仍需填充使其最後為512的整數倍。
註:與MD5比較:
-附加填充位和附加消息長度與MD5相同。
-初始化緩沖器:SHA用兩個緩沖區,每個區均有

5個32位的寄存器,分別為 A、B、C、D、E和H0、H1、H2、H3、H4。另有一單字緩沖區。
-按512 bit分組處理輸入消息,主循環包括4輪(和MD5一樣),但每輪操作20次(MD5為16次)
(詳見參考資料)

2.5 數字信封
用於保證數據在傳輸過程中的安全。對稱加密效率高,但密鑰不適合在公共網路傳遞,而非對稱加密傳遞簡單,但效率低下。數字信封技術取二合一,即取對稱加密的高效性和非對稱加密的靈活性。
(RefB_p385_數字信封)

-兩個不同的加密解密過程:明文的加密/解密,密鑰的加密/解密。首先使用對稱加密演算法對數據加密;然後,利用非對稱加密演算法對對稱加密過的密鑰進行加密,過程包括:
(1) 發送消息時,發送方生成一個對稱密鑰。
(2) 發送方使用自己的對稱加密的密鑰和演算法對欲發送的數據進行加密,形成數據密文。
(3) 發送方使用接收方提供的公鑰,對自己的密鑰進行加密。
(4) 發送方通過網路將加密後的密文和密鑰傳輸到接收方。
(5) 接收方用私鑰對加密後的發送方密鑰進行解密,獲得對稱密鑰。
(6) 接收方使用還原出的密鑰對數據進行解密,得到數據明文。

應用兩層加密體制,在內層運用對稱加密技術,每次傳送消息都可以重新生成新的密鑰,保證消息的安全性。在外層,利用非對稱加密技術加密對稱密鑰,保證密鑰傳遞的安全性。

2.6 身份認證技術的發展
網路用戶的身份認證可以用下列3中基本方法之一或它們的組合來實現。
(1) 所知(knowledge): 驗證用戶的密碼,口令等。
(2) 所有(possession): 所掌握的用戶的身份證、護照、信用卡等。
(3) 特徵(characteristics):所掌握的用戶的指紋、聲音、筆記、手型,虹膜,DNA、動作等。

⑵ 常用的加密演算法有哪些

對稱密鑰加密

對稱密鑰加密 Symmetric Key Algorithm 又稱為對稱加密、私鑰加密、共享密鑰加密:這類演算法在加密和解密時使用相同的密鑰,或是使用兩個可以簡單的相互推算的密鑰,對稱加密的速度一般都很快。

⑶ 在asp中如何解密SHA256加密函數

sha屬於單向加密,類似於md5,不能逆運算,沒有密鑰,所以不能解密。
當然暴力破解可以碰碰運氣,但成功率很低。

⑷ 知道私鑰怎麼提幣

有了私鑰,我們就可以使用橢圓曲線乘法這個單向加密函數產生一個公鑰(K)。
有了公鑰(K),我們就可以使用一個單向加密哈希函數生成比特幣地址(A)。
H3
私鑰
私鑰就是一個隨機選出的數字而已。一個比特幣地址中的所有資金的控製取決於相應私鑰的所有權和控制權。在比特幣交易中,私鑰用於生成支付比特幣所必需的簽名以證明資金的所有權。私鑰必須始終保持機密,因為一旦被泄露給第三方,相當於該私鑰保護之下的比特幣也拱手相讓了。私鑰還必須進行備份,以防意外丟失,因為私鑰一旦丟失就難以復原,其所保護的比特幣也將永遠丟失。
比特幣私鑰只是一個數字。你可以用硬幣、鉛筆和紙來隨機生成你的私鑰:擲硬幣256次,用紙和筆記錄正反面並轉換為0和1,隨機得到的256位二進制數字可作為比特幣錢包的私鑰。該私鑰可進一步生成公鑰。
H3
公鑰
通過橢圓曲線演算法可以從私鑰計算得到公鑰,這是不可逆轉的過程:K = k * G。其中k是私鑰,G是被稱為生成點的常數點,而K是所得公鑰。其反向運算,被稱為「尋找離散對數」——已知公鑰K來求出私鑰k——是非常困難的,就像去試驗所有可能的k值,即暴力搜索。
H3
比特幣地址
比特幣地址是一個由數字和字母組成的字元串,可以與任何想給你比特幣的人分享。由公鑰(一個同樣由數字和字母組成的字元串)生成的比特幣地址以數字「1」開頭。下面是一個比特幣地址的例子:

在交易中,比特幣地址通常以收款方出現。如果把比特幣交易比作一張支票,比特幣地址就是收款人,也就是我們要寫入收款人一欄的內容。一張支票的收款人可能是某個銀行賬戶,也可能是某個公司、機構,甚至是現金支票。支票不需要指定一個特定的賬戶,而是用一個普通的名字作為收款人,這使它成為一種相當靈活的支付工具。與此類似,比特幣地址的使用也使比特幣交易變得很靈活。比特幣地址可以代表一對公鑰和私鑰的所有者,也可以代表其它東西,比如「P2SH
(Pay-to-Script-Hash)」付款腳本。

⑸ 華為交換機的密碼是經什麼演算法加密的

常見加密演算法 MD5 SHA 等單向加密函數演算法。。建議去下載一個加密演算法檢測工具,看雪學院有。
交換機的話,一般肯定用硬體實現方便的演算法,如果有可能的話甚至都不加密。

一般交換機應該支持snmp協議管理,那種驗證方法,較為復雜,具體情況你得用wireshark抓包。

總之破交換機密碼,不復雜,窮舉都OK了。。不過破解或者入侵前做好自我的防範工作,- - 給人抓到就Over了。

java加密的幾種方式

朋友你好,很高興為你作答。

首先,Java加密能夠應對的風險包括以下幾個:

1、核心技術竊取

2、核心業務破解

3、通信模塊破解

4、API介面暴露

本人正在使用幾維安全Java加密方式,很不錯,向你推薦,希望能夠幫助到你。

幾維安全Java2C針對DEX文件進行加密保護,將DEX文件中標記的Java代碼翻譯為C代碼,編譯成加固後的SO文件。默認情況只加密activity中的onCreate函數,如果開發者想加密其它類和方法,只需對相關類或函數添加標記代碼,在APK加密時會自動對標記的代碼進行加密處理。

與傳統的APP加固方案相比,不涉及到自定義修改DEX文件的載入方式,所以其兼容性非常好;其次Java函數被完全轉化為C函數,直接在Native層執行,不存在Java層解密執行的步驟,其性能和執行效率更優。

如果操作上有不明白的地方,可以聯系技術支持人員幫你完成Java加密。

希望以上解答能夠幫助到你。

⑺ 求助:asp.net程序 對用戶密碼md5(md5($password).$salt)加密

$salt不是演算法,只是一個變數而已,其實是用了PHP的crypt單向加密函數例如$A=
md5
('密碼');
$B=crypt($A);

⑻ 電驢英文版有個Hashing,是什麼

就是平常說的哈希校驗...是用來判斷文件是否被更改過...
電驢是下載完成後進行哈希校驗的...而BT是在開始下載前進行哈希校驗的..

關於哈希的更多介紹.我給你個網址吧.

⑼ 請問現在開發項目一般用到哪些加密演算法

現階段開發項目主要用到 BASE64 、 MD5 、 SHA 、 HMAC 幾種加密演算法。 BASE64 編碼演算法不算是真正的加密演算法。 MD5 、 SHA 、 HMAC 這三種加密演算法,可謂是非可逆加密,就是不可解密的加密方法,我們稱之為單向加密演算法。我們通常只把他們作為加密的基礎。單純的以上三種的加密並不可靠。 BASE64的加密解密是雙向的,可以求反解。 MD5、SHA以及HMAC是單向加密,任何數據加密後只會產生唯一的一個加密串,通常用來校驗數據在傳輸過程中是否被修改。其中HMAC演算法有一個密鑰,增強了數據傳輸過程中的安全性,強化了演算法外的不可控因素。 單向加密的用途主要是為了校驗數據在傳輸過程中是否被修改。

⑽ md5碼,幫我解密,有可能被加密過幾次,給您5分

MD5使用的是單向加密函數,一般不能解密.據說有人已經建立了龐大的資料庫用於解密.但我覺得這好不現實.

閱讀全文

與單向加密函數相關的資料

熱點內容
安卓怎麼下載60秒生存 瀏覽:792
外向式文件夾 瀏覽:225
dospdf 瀏覽:420
怎麼修改騰訊雲伺服器ip 瀏覽:377
pdftoeps 瀏覽:483
為什麼鴻蒙那麼像安卓 瀏覽:726
安卓手機怎麼拍自媒體視頻 瀏覽:176
單片機各個中斷的初始化 瀏覽:714
python怎麼集合元素 瀏覽:470
python逐條解讀 瀏覽:822
基於單片機的濕度控制 瀏覽:488
ios如何使用安卓的帳號 瀏覽:874
程序員公園采訪 瀏覽:802
程序員實戰教程要多長時間 瀏覽:965
企業數據加密技巧 瀏覽:125
租雲伺服器開發 瀏覽:804
程序員告白媽媽不同意 瀏覽:327
攻城掠地怎麼查看伺服器 瀏覽:592
android開機黑屏 瀏覽:568
mc純生存伺服器是什麼意思 瀏覽:440