--- title: day16 常見密碼學算法 tags: iThome(2022) description: note --- # day16 常見密碼學算法 以下列出密碼學中常見的算法 ## 雜湊演算法 (Hashing) 雜湊演算法是不可逆的,數據再經過雜湊演算法過程中會遺失資訊,用於驗證資料的正確性。 ## 現今已被破解的密碼演算法 ### md5 (message-digest algorithm 5) md5使用雜湊演算法,可以將字串、檔案、壓縮包轉成一串128bit。 特性: * 在進行演算法過程中是單向的,意即被加密後無法被還原 * 相同的輸入必定得到相同的輸出 * 輸入內容即使相似,輸出也會差異非常大 用途: 常被用來當作檔案的校驗碼或是不需要被還原的資料,針對相同帳密輸入,會去比對經由md5算法出來後的結果,相同字串則讓使用者登入,但因為輸出輸入輸出固定,因此利用比對生成輸出結果(2^69)是可以被暴力破解的。 ### SHA-1 (Secure Hash Algorithm 1) 由上面md5長度增加到160bit,長度越長越不容易被破解,但SHA-1與md5現今在使用上都已經都不安全。 ## 尚安全的密碼演算法 ### SHA-2 SHA-1算法加強版,為了解決SHA-1算法被破解而產生,SHA-2有可以生成兩種形式,SHA-256與SHA-512分別可以產生256bit與512bit,為現今被大量使用的算法 ### SHA-3 為了預防SHA-2被破解,因此SHA-3用了與上述兩種不同的全新的算法去做加密 ### scrypt scrypt是一種密碼衍生演算法,使用scrypt演算法來衍生key,其過程中需要使用到大量的記憶體,scrypt演算法主要為預防暴力破解攻擊 ### bcrypt bcrypt使用雜湊演算法,其生成的出來的結果都不一樣,就算相同輸入,輸出的結果都會不一樣,因此如果要使用密碼比對,生成出來的hash值要再經由bcrypt算法提供函數去比對。 ## 參考 * https://blog.m157q.tw/posts/2017/12/25/differences-between-encryption-and-hashing/ * https://www.796t.com/content/1547468467.html * https://www.gushiciku.cn/pl/pcHM/zh-tw * https://ithelp.ithome.com.tw/articles/10293822?sc=rss.qu * https://ithelp.ithome.com.tw/articles/10294539?sc=iThelpR * https://iter01.com/631161.html * https://ithelp.ithome.com.tw/articles/10196477 ## Thank you! :dash: You can find me on - GitHub: https://github.com/shaung08 - Email: a2369875@gmail.com