幾種加密方式


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 對稱加密算法

 

優點:算法公開、計算量小、加密速度快、加密效率高、可逆

缺點:雙方使用相同鑰匙,安全性得不到保證

現狀:對稱加密的速度比公鑰加密快很多,在很多場合都需要對稱加密,

算法: 在對稱加密算法中常用的算法有:DES3DES、TDEA、Blowfish、RC2、RC4、RC5IDEA、SKIPJACK、AES等。不同算法的實現機制不同,可參考對應算法的詳細資料

相較於DES和3DES算法而言,AES算法有着更高的速度和資源使用效率,安全級別也較之更高了,被稱為下一代加密標准

 

nECB :電子代碼本,就是說每個塊都是獨立加密的

nCBC :密碼塊鏈,使用一個密鑰和一個初始化向量 (IV)對數據執行加密轉換

 

ECB和CBC區別:CBC更加復雜更加安全,里面加入了8位的向量(8個0的話結果等於ECB)。在明文里面改一個字母,ECB密文對應的那一行會改變,CBC密文從那一行往后都會改變。

 

5 RSA加密(非對稱加密算法)(Secruty.framework系統庫)

 

非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)

非對稱加密中使用的主要算法有:RSAElgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。

公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那么只有用對應的公開密鑰才能解密

特點:

非對稱密碼體制的特點:算法強度復雜、安全性依賴於算法與密鑰但是由於其算法復雜,而使得加密解密速度沒有對稱加密解密的速度快

對稱密碼體制中只有一種密鑰,並且是非公開的,如果要解密就得讓對方知道密鑰。所以保證其安全性就是保證密鑰的安全,而非對稱密鑰體制有兩種密鑰,其中一個是公開的,這樣就可以不需要像對稱密碼那樣傳輸對方的密鑰了

 

但是RSA加密算法效率較差,對大型數據加密時間很長,一般用於小數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM