android 密码加密
之前,自己嘗試搭建一個服務器,服務器搭好后,自己希望在app上加一個登陸和注冊的功能。其實就是app通過POST請求把用戶輸入的用戶名和密碼發送給服務器,然后,服務器對數據庫進行讀取,和用戶的數據進行比較,然后返回結果。
其實,登陸功能基本了,可是給組長看的時候,它說密碼的傳遞應該是要加密的,不然別人一抓包,不就知道用戶的密碼了。所有到網上查了一些資料,最后找到了一些加密的代碼。
1.采用異或的代碼進行加密
public static String encodeSimple(String message){String password=message;//要加密或者解密的字符串 char[]array=password.toCharArray();//獲取字符數組 for(int i=0;i<array.length;i++)//遍歷字符數組 {array[i]=(char)(array[i] ^ aaaaaaaaaaaa);//對每個數組元素進行異或運算,異或的值可以自己選擇 }return new String(array); }這種加密比較簡單,只是把加密的字符串與我們所指定的字符串進行異或運算,便得到加密的數據。解密也十分簡單,把加密過的數據與之前指定的字符串再進行一次異或運算就可以了。
2.采用android自帶的MD5加密
什么是MD5加密?
? ? ?MD5英文全稱“Message-Digest Algorithm 5”,翻譯過來是“消息摘要算法5”,由MD2、MD3、MD4演變過來的,是一種單向加密算法,是不可逆的一種的加密方式。
?
MD5加密有哪些特點?
-
壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
-
容易計算:從原數據計算出MD5值很容易。
-
抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
-
強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
這些是我在網上找的關于MD5加密的資料,但是我們必須知道,可以用MD5加密數據,卻不可能從MD5獲得原數據,所以MD5加密不可逆。
public static String encode(String password) {// MessageDigest專門用于加密的類 try {MessageDigest messageDigest = MessageDigest.getInstance("MD5"); messageDigest.reset(); messageDigest.update(password.getBytes("UTF-8")); byte[] result = messageDigest.digest(); // 得到加密后的字符組數 StringBuffer sb = new StringBuffer(); for (byte b : result) {int num = b & 0xff; // 這里的是為了將原本是byte型的數向上提升為int型,從而使得原本的負數轉為了正數 String hex = Integer.toHexString(num); //這里將int型的數直接轉換成16進制表示 //16進制可能是為1的長度,這種情況下,需要在前面補0, if (hex.length() == 1) {sb.append(0); }sb.append(hex); }return sb.toString(); } catch (NoSuchAlgorithmException e) {e.printStackTrace(); } catch (UnsupportedEncodingException e) {e.printStackTrace(); }return null; }這就是具體的MD5加密代碼,網上很多,不做具體講解。但是實現從客戶端傳遞密碼時,可以生成一個隨機數,與密碼一起加密,然后把隨機數與加密的密碼一起發送給服務器,服務器也把客戶端傳遞的隨機數與數據庫的密碼進行MD5加密,對比客戶端的加密值,如果相等,就認為密碼正確。不過,隨機數最好也進行加密,不過不能用MD5加密,因為到服務器后需要解密,所以必須有加密和解密的代碼。
這就是密碼的加密了。
總結
以上是生活随笔為你收集整理的android 密码加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: listview异步加载图片
- 下一篇: android 键盘的隐藏与显示