密文形式儲存密碼

2021-10-20 18:53:26 字數 2199 閱讀 9502

絕大部分系統都會有使用者註冊和登入功能,其中密碼是非常重要且敏感的資訊。這種資訊如果以明文形式儲存在資料庫中時非常不安全的。因此以密文形式儲存是任何系統都應該做的最基本的安全措施。

資料加密 的基本過程,就是對原來為 明文 的檔案或資料按 某種演算法 進行處理,使其成為 不可讀 的一段**,通常稱為 「密文」。通過這樣的途徑,來達到 保護資料 不被 非法人竊取、閱讀的目的。

什麼是解密

加密 的 逆過程 為 解密,即將該 編碼資訊 轉化為其 原來資料 的過程。

雜湊演算法

雜湊演算法(hash algorithms)也稱為雜湊演算法、雜湊演算法或數字指紋,是可以將任意長度的訊息壓縮為乙個固定長度的訊息的演算法。

雜湊演算法是區塊鏈技術體系的重要組成部分,也是現代密碼學領域的重要分支,在身份認證、數字簽名等諸多領域有著廣泛的應用。

雜湊演算法可以在極短的時間內,將任意長度的二進位制字串對映為固定長度的二進位制字串,輸出值稱為雜湊值(hash value)或者數字摘要(digital digest)。

密碼學雜湊演算法的主要特性就是單向性,即在演算法上,只能從輸入值計算得到輸出值,而從輸出值計算得到輸入值是不可行的。

常用的雜湊演算法包括md系列演算法和sha系列演算法,其中md系列演算法有md2、md4、md5、ripemd演算法等,sha系列演算法有sha1、sha224、sha256、sha384和sha512等演算法。

在雜湊演算法中,md5演算法和sha1演算法是應用最廣泛的,兩者的原理相差不大,但md5演算法加密後的輸出值的長度為128位元,sha1演算法加密後的輸出值的長度為160位元。但是二者現在已被破解,安全性大大的降低。目前sha256是比較常見的演算法,至少目前仍是較為安全的一種演算法。

對稱加密演算法

對稱加密演算法 是應用較早的加密演算法,又稱為 共享金鑰加密演算法。在 對稱加密演算法 中,使用的金鑰只有乙個,傳送 和 接收 雙方都使用這個金鑰對資料進行 加密 和 解密。這就要求加密和解密方事先都必須知道加密的金鑰。

資料加密過程:在對稱加密演算法中,資料傳送方 將 明文 (原始資料) 和 加密金鑰 一起經過特殊 加密處理,生成複雜的 加密密文 進行傳送。

資料解密過程:資料接收方 收到密文後,若想讀取原資料,則需要使用 加密使用的金鑰 及相同演算法的 逆演算法 對加密的密文進行解密,才能使其恢復成 可讀明文。

aes、des、3des 都是 對稱 的 塊加密演算法,加解密 的過程是 可逆的。常用的有 aes128、aes192、aes256。

非對稱加密演算法

非對稱加密演算法,又稱為 公開金鑰加密演算法。它需要兩個金鑰,乙個稱為 公開金鑰 (public key),即 公鑰,另乙個稱為 私有金鑰 (private key),即 私鑰。

因為 加密 和 解密 使用的是兩個不同的金鑰,所以這種演算法稱為 非對稱加密演算法。

1.如果使用 公鑰 對資料 進行加密,只有用對應的 私鑰 才能 進行解密。

2. 如果使用 私鑰 對資料 進行加密,只有用對應的 公鑰 才能 進行解密。

rsa 加密演算法是目前最有影響力的 公鑰加密演算法,並且被普遍認為是目前 最優秀的公鑰方案 之一。rsa 是第乙個能同時用於 加密 和 數字簽名 的演算法,它能夠 抵抗 到目前為止已知的 所有密碼攻擊,已被 iso 推薦為公鑰資料加密標準。

ecc 也是一種 非對稱加密演算法,主要優勢是在某些情況下,它比其他的方法使用 更小的金鑰,比如 rsa 加密演算法,提供 相當的或更高等級 的安全級別。不過乙個缺點是 加密和解密操作 的實現比其他機制 時間長 (相比 rsa 演算法,該演算法對 cpu 消耗嚴重)。

引入apache提供的hash加密演算法工具包:

commons-codec

commons-codec

1.15

使用工具類進行加密:

string password = "lovo";

// md5加密

digestutils.md5hex(password)

// sha256加密

digestutils.sha256hex(password)

密碼顯示明文密文的demo

目標 單擊事件的運用 checkbox.setonclicklistener new onclicklistener else 主要使用的是settransformationmethod方法,引數需要乙個transformationmethod例項,通過工廠模式返回。依靠hidereturnstra...

1 微信密碼盒子之密文

對於上一次的效果,其實我本人很不滿意,今天回頭看看覺得很不舒服,趁今天有時間就來重新做一做效果,廢話不多說了,先上效果圖吧 下面是原始碼,具體實現細節我會用乙個doc文件記錄下來的,這個文件用於引導新手的,大神勿噴。public class passbox extends view public p...

LDAP中SSHA形式的密碼儲存

以前吧,接觸到的系統,密碼都是儲存在關係型資料庫中,而且基本上都是md5之後儲存的,所以要去資料庫找密碼很容易,找到密文之後,通過網上的反查工具,也很容易得到密碼。最近在折騰乙個認證伺服器,當然,它用的ldap,一直沒接觸過,費了一些功夫,才連進去,然後找到了儲存的密碼,形如 c4cltked1rl...