絕大部分系統都會有使用者註冊和登入功能,其中密碼是非常重要且敏感的資訊。這種資訊如果以明文形式儲存在資料庫中時非常不安全的。因此以密文形式儲存是任何系統都應該做的最基本的安全措施。
資料加密 的基本過程,就是對原來為 明文 的檔案或資料按 某種演算法 進行處理,使其成為 不可讀 的一段**,通常稱為 「密文」。通過這樣的途徑,來達到 保護資料 不被 非法人竊取、閱讀的目的。
什麼是解密
加密 的 逆過程 為 解密,即將該 編碼資訊 轉化為其 原來資料 的過程。
雜湊演算法
雜湊演算法(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...