DES加密
DES的有效密钥只有56比特,目前计算机的算力可以在有效时间内暴力破解DES加密。为了保证安全,防止暴力破解,对称加密的密钥长度至少为 128比特。
AES加密
Java 的Cipher.getlnstance(nAES) 使用SunJCE 实现,默认的加密模式是AES/ECB/PKCS5Padding。分组加密的工作模式有ECB、CBC、CTR、GCM,其中ECB是最简单的加密模式。
ECB模式,对每块数据独立加密,因此加密、解密都可以并行计算,相同的明文块会被加密成相同的密文块,攻击者可以据此区分出明文的模式,同时也可以通过重排密文分组顺序来改变对应的明文顺序。
GCM模式,提供了对消息的加密和完整性校验,防止密文被篡改。推荐使用AES加密算法并采用GCM模式。
// 不安全
Cipher cipher = Cipher.getlnstance("DES");
Cipher cipher = Cipher.getlnstance("AES");
Cipher cipher = Cipher.getlnstance("AES/ECB");
Cipher cipher = Cipher.getlnstance("AES/ECB/PKCS5Padding");
// 安全
Cipher cipher = Cipher.getlnstance("AES/GCM/NoPaddingn);