Android 中的最常用得到有三種加密方式:MD5,AES,RSA.
1.MD5
MD5本質是一種散列函數,用以提供消息的完整性保護。
特點:
1.壓縮性:任意長度的數據,算出的MD5值長度都是固定的;
2.容易計算:從原數據計算出MD5值很容易;
3.抗修改性:對原數據進行任何改動,哪怕只修改一個位元組,所得到的MD5值都有很大的區別
4.強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(及偽造數據)是非常困難的;
2.RSA加密
RSA加密演算法是一種非對稱加密演算法,非對稱加密演算法需要兩個密鑰:公共密鑰和私有密鑰。公鑰和私鑰是配對的,用公鑰加密的數據只有配對的私鑰才能解密。
RSA對加密數據的長度有限制,一般為密鑰的長度值-11,要加密較長的數據,可以採用數據截取的方法,分段加密。
3.AES加密
AES加密是一種高級加密的標准,是一種區塊加密標准。它是一個對稱密碼,就是說加密和解密用相同的密鑰。WPA/WPA2經常用的加密方式就是AES加密演算法。
② android md5加密一次第二次加密,會怎麼樣
一段信息經過MD5加密之後,形成128位的整數,而且MD5演算法是不可逆的,你經過第一次加密之後,一般情況下不會被破解。經過一次加密,你第二次加密相當於把第一次加密後的整數當成字元串,再次加密之後還是128位。
③ android簽名是要md5值還是要sha1值
android簽名是要md5值
④ Android 簽名 SHA1WithRSA SHA256WithRSA MD5WithRSA
在對app進行簽名,然後上傳到某應用市場時,有如下報錯
<center>錯誤提示</center>
<center>記錄一下自己踩的坑,也希望能幫到碰到同樣問題的人。</center>
MD5 SHA1 SHA256 SHA512 這4種本質都是摘要函數,不通在於長度:
MD5 是 128 位,
SHA1 是 160 位 ,
SHA256 是 256 位,
SHA512 是512 位。
SHA1WithRSA 他的 核心演算法是 先用sha1 去摘要,然後使用 RSA 加密。但是 他在 sha1 的過程中 加入了一些 關於演算法的東西。
作用特點:
SHA1:公鑰後處理回傳,SHA1是不可逆的、防沖
MD5:防篡改
MD5和SHA1是2種加密演算法,用於計算出一段不可逆向計算的數值,以此來驗證該文件是否被修改的.
AES:更快,兼容設備,安全級別高;
DES:本地數據,安全級別低
RSA:非對稱加密,有公鑰和私鑰
⑤ Android 網路交互之MD5為什麼要加鹽
MD5自身是不可逆的 但是目前網路上有很多資料庫支持反查詢
如果用戶密碼資料庫不小心被泄露黑客就可以通過反查詢方式獲得用戶密碼或者對於資料庫中出現頻率較高的hash碼(即很多人使用的)進行暴力破解(因為它通常都是弱口令)
鹽值就是在密碼hash過程中添加的額外的隨機值
比如我的id是癲ω倒④ゞ 密碼是123456 存在資料庫中的時候就可以對字元串123456/癲ω倒④ゞ 進行hash,而驗證密碼的時候也以字元串(要驗證的密碼)/癲ω倒④ゞ 進行驗證
這樣有另外一個笨蛋密碼是123456的時候 依然能構造出不同的hash值 並且能成功的驗證
這時候我的id就作為鹽值 為密碼進行復雜hash了
所以么。。鹽值的作用是減少資料庫泄露帶來的損失
如果你RP非常好 猜中了我的密碼是123456 我也阻止不了你啊
一般情況下,系統的用戶密碼都會經過一系列的加密才會存儲到資料庫或者別的資源文件。
鹽值加密:把你原來密碼,加上一些鹽然後再進行一些列的加密演算法。
比如你的密碼是:899312 用戶名是:gaobing
在security 中鹽值加密可以是這樣加鹽的899312{gaobing} 然後 ,在進行一些列的加密。
上一篇日誌中介紹了三種登陸設置,這邊用資料庫的那種作為例子:
<authentication-manager
<authentication-provider user-service-ref='myUserDetailsService'
<password-encoder hash=md5<salt-source user-property=username/</password-encoder
</authentication-provider
</authentication-manager
<b:bean id=myUserDetailsService
class=org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl
<b:property name=dataSource ref=dataS /
</b:bean說明:
<salt-source user-property=username/ 這一句即聲明了所加的鹽值,即資料庫中的username欄位。
<password-encoder hash=md5 在他的屬性中指明了加鹽之後的加密演算法 即MD5(應該是32位 我測試是32位的)
這樣設置後你的資料庫中的密碼也應該是經過鹽值加密的。
比如username:gaobing 在資料庫中的password應該是899312{gaobing}經過MD5加密後的 。