1. Base64加密方式(可逆)
Base64中的可打印字符包括字母A-Z/a-z/數組0-9/ 加號’+’斜杠’/’ 這樣共有62個字符
Base64 ios7之后加入系統庫
// 加密 public static String getBase64(String str) { byte[] b = null; String s = null; try { b = str.getBytes("utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if (b != null) { s = new BASE64Encoder().encode(b); } return s; } // 解密 public static String getFromBase64(String s) { byte[] b = null; String result = null; if (s != null) { BASE64Decoder decoder = new BASE64Decoder(); try { b = decoder.decodeBuffer(s); result = new String(b, "utf-8"); } catch (Exception e) { e.printStackTrace(); } } return result; }
2 MD5加密
Message Digest Algorithm MD5(中文名為消息摘要算法第五版)為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護
是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實現。
根據輸出值,不能得到原始的明文,即其過程不可逆
import java.security.MessageDigest
import sun.misc.BASE64Encoder;
/** * 對字符串加密的方法 * @param str * @return */ public static String toMessageDigest(String str) { try { MessageDigest md = MessageDigest.getInstance("MD5"); BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(md.digest(str.getBytes("utf-8"))); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } }
MD5算法具有以下特點:
1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
2、容易計算:從原數據計算出MD5值很容易。
3、抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
4、強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
MD5的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被”壓縮"成一種保密的格式(就是把一個任意長度的字節串變換成一定長的十六進制數字串)。除了MD5以外,其中比較有名的還有sha-1、RIPEMD以及Haval等。
MD5加鹽
3 鑰匙串加密方式
iCloud鑰匙串,蘋果給我們提供的密碼保存的解決方案,iOS7之后有的
存沙盒:
1、如果手機越獄,密碼容易被竊取。
2、當軟件更新時,沙盒里的內容是不被刪除的。但是,如果將軟件卸載后重裝,沙盒里的數據就沒有了。
3、每個APP的沙盒是相對獨立的,密碼無法共用。
存鑰匙串里:
1、蘋果提供的安全方案,rsa加密,相對安全。
2、無論軟件更新或刪除,密碼都存在,都可以自動登錄。
3、同一公司的APP密碼是可以共用的。
4 對稱加密算法
優點:算法公開、計算量小、加密速度快、加密效率高、可逆
缺點:雙方使用相同鑰匙,安全性得不到保證
現狀:對稱加密的速度比公鑰加密快很多,在很多場合都需要對稱加密,
算法: 在對稱加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK、AES等。不同算法的實現機制不同,可參考對應算法的詳細資料
相較於DES和3DES算法而言,AES算法有着更高的速度和資源使用效率,安全級別也較之更高了,被稱為下一代加密標准
nECB :電子代碼本,就是說每個塊都是獨立加密的
nCBC :密碼塊鏈,使用一個密鑰和一個初始化向量 (IV)對數據執行加密轉換
ECB和CBC區別:CBC更加復雜更加安全,里面加入了8位的向量(8個0的話結果等於ECB)。在明文里面改一個字母,ECB密文對應的那一行會改變,CBC密文從那一行往后都會改變。
5 RSA加密(非對稱加密算法)(Secruty.framework系統庫)
非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)
非對稱加密中使用的主要算法有:RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。
公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密
特點:
非對稱密碼體制的特點:算法強度復雜、安全性依賴於算法與密鑰但是由於其算法復雜,而使得加密解密速度沒有對稱加密解密的速度快
對稱密碼體制中只有一種密鑰,並且是非公開的,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全,而非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了
但是RSA加密算法效率較差,對大型數據加密時間很長,一般用於小數據。