⑴ sha256演算法可逆嗎解密超級計算機也無能為力
最流行的計算機演算法之一可能是SHA-256哈希函數。它是目前最流行、最強的加密函數之一。它非常強大,被用於比特幣等加密貨幣。這是一個牢不可破的函數,由此產生的問題價值數千億美元。
那麼,是什麼讓這個哈希函數不可攻破呢?有幾個因素我們需要討論一下。首先,我們來看看SHA-256哈希函數。
SHA-256
SHA-256(安全哈希演算法-256)是一個確定的單向哈希函數。它是美國國家安全局開發的SHA-2加密哈希函數的成員之一。到目前為止,它的256位密鑰從未被泄露過。以前SHA-1是用於加密的散列演算法。但是,隨著時間的推移,SHA-1逐漸被棄用,它也不再被認為是安全的。所以SHA-2就被開發出來了。
2016年,SSL證書行業向SHA-2過渡,SHA-2成為新標准。SHA-256是SHA-2加密哈希函數的成員,從未被泄露。那麼,它為何如此安全呢?我們馬上就知道了。
它是如何工作的?
哈希函數只是將大量的信息轉換成較小的隨機數。SHA-256演算法從給定的大隨機數中生成一個小的隨機數。但是,當相同的大數值通過哈希函數傳遞時,較小的數值總是相同的。
SHA-256非常安全,即使我們只改變了輸入中的一位數字,輸出也會完全改變。SHA-256返回一個十六進製表示,256位表示64個十六進制字元。無論輸入多長,它總是返回64個字元的十六進制字元串。
還記得我說過SHA-256是一個確定的單向哈希函數嗎?這意味著,它是一個數學函數,接受任意大小的輸入,但返回固定大小的輸出,就像文件或字元串的數字指紋。它是確定性的,因為相同的輸入總是產生相同的輸出。這是一種方法,因為很難向後執行操作,也就是說,從輸出返回輸入字元串。
以下是一些例子:
Input: hello
Output:
Input: Hello
Output:
不管它的長度是多少,它都會返回一個64個字元的字元串。而且,即使是大寫一個單詞也會完全改變哈希值,我們不可能通過哈希函數,猜出" hello "和" Hello "很相似。
現在,您可以向哈希函數提供任何類型的輸入,例如任意長度和大小的圖像、文本、視頻,它將生成精確為64個字元的輸出。這就像是任何文件或字元串的數字指紋。
它的安全性如何?
獲得相同哈希號的唯一方法是輸入相同的文件或字元串。即使是一個小的調整也會完全改變輸出。這就是它如此安全的原因。
你可以用這個演算法嘗試一些有趣的東西。你可以隨便拍一張照片,通過SHA-256函數,輸出的數字可能是人類歷史上從未見過的。
千億美元的問題是什麼?
沒人能找到逆轉演算法的方法。記得我說過這是單向的嗎?這是因為幾乎不可能逆轉,至少在今天是這樣。建立一個可以逆轉SHA-256哈希的演算法需要數十億美元。
為什麼它如此珍貴?
因為如果你能逆轉SHA-256哈希,你就能比地球上任何人都更快地挖掘比特幣。要挖掘比特幣,你必須找到一個輸入,它的輸出是SHA-256,開頭有70多個0。由於沒有已知的公式來做到這一點,我們唯一的方法是通過蠻力計算。它只是嘗試一系列不同的輸入,直到我們找到一個可行的答案。
找到相同的哈希輸入是不可能的(我將在後面解釋),但是要挖掘比特幣,您只需要匹配它的一小部分。所以,這是可能的。通過這種方式,在大約10分鍾內,某個人在某個地方賺了12.5個比特幣,差不多40萬美元(截止2月1日價格)。
現在,像這樣想,如果你有一個演算法來找到一個輸入,它將生成與給定哈希匹配的輸出。你很快就會賺上不可估量的財產。
一些隨機數據
我們已經建立了盡可能快地運行SHA-256演算法的特殊機器。在整個世界,比特幣礦工每秒運行60,000,000,000,000哈希!
⑵ 計算機演算法有哪些
1. 排序演算法:排序演算法是計算機中最基本且應用廣泛的演算法之一。包括冒泡排序、選擇排序、插入排序、快速排序、歸並排序等。這些演算法的主要目的是將一組數據按照特定的順序(如升序或降序)重新排列。
2. 搜索演算法:搜索演算法主要用於在數據結構中找到特定的信息。常見的搜索演算法包括線性搜索、二分搜索、哈希表搜索等。這些演算法在不同的場景下,具有不同的性能和特點。例如二分搜索適用於有序數據的快速查找,而哈希表搜索則適用於鍵值對的快速匹配。
3. 圖演算法:圖演算法主要處理與圖形數據結構相關的問題,如最短路徑問題、最小生成樹問題等。常見的圖演算法包括Dijkstra演算法、Bellman-Ford演算法等。這些演算法在網路路由、社交網路分析等領域有廣泛應用。
4. 動態規劃演算法:動態規劃演算法是一種解決最優化問題的有效方法,適用於許多實際問題,如背包問題、資源分配問題等。動態規劃通過將問題分解為子問題,並存儲子問題的解,從而有效地解決復雜問題。
5. 機器學習演算法:隨著人工智慧的發展,機器學習演算法在計算機科學中占據了重要地位。包括監督學習(如決策樹、支持向量機)、無監督學習(如聚類演算法)、深度學習等。這些演算法在數據分析、模式識別等領域有廣泛應用。計算機演算法的多樣性使得我們可以針對不同的應用場景選擇合適的演算法來解決問題。這些演算法在理論和實踐中都起著至關重要的作用,推動著計算機科學的發展。