? ? ? ?當(dāng)涉及到用戶信息啊等比較隱私的數(shù)據(jù)九火,應(yīng)該對用戶負責(zé)赚窃,對數(shù)據(jù)加密保證數(shù)據(jù)安全。除了采用https保證數(shù)據(jù)安全外岔激,我們還采用了RSA+AES 混合加密勒极。?
? ? ? ? 非對稱加密,即加密和解密用的秘鑰不同虑鼎,公鑰用來加密辱匿,私鑰用來解密,如果雙方都需要收發(fā)數(shù)據(jù)炫彩,那么需要客戶端和服務(wù)端都各自生成一對秘鑰匾七,將公鑰傳給對方用于對數(shù)據(jù)加密。該加密方式比較安全江兢,很難破解昨忆,但是加密解密需要時間較長,尤其對于性能較差的CPU杉允,耗時更長扔嵌。該加密方式用的比較多的算法是RSA算法。
? ? ? ? 對稱加密夺颤,即加密和解密只需要一個秘鑰即可痢缎。該加密方式計算速度較快,耗時較少世澜,但是對于多個服務(wù)需要多個key独旷,一般需要通過接口傳遞,容易被截取。該加密方式用的較多的算法是AES算法嵌洼。
? ? ? ? 綜上案疲,一般需要將二者結(jié)合,物盡其用麻养,先由服務(wù)端生成一對公鑰褐啡、私鑰(RSA 加密方式)將公鑰給客戶端,私鑰留給自己鳖昌,對于android APP 公鑰存在 .so 文件备畦,不容易泄露。然后客戶端 生成AES 的key? 许昨,該key 用于之后服務(wù)端和客戶端數(shù)據(jù)通信的加密解密懂盐,服務(wù)端對key 和其他信息通過加密發(fā)送給服務(wù)端,服務(wù)端存儲該key用于日后跟該客戶端加密解密數(shù)據(jù)糕档。