- MD5:
- 不可逆,一般用于信息比对
- MD5值长度固定为128bit
- 容易计算
- 抗修改性
- 抗强碰撞,非常难伪造
使用工具类获取字符串的md5值:
String strMd5 = MD5.md5("hello,中国");
比较两个文件是否相等:
String strFile1Md5 = MD5.getFileMD5(new File("/sdcard/download/aaa.jpg"));
String strFile2Md5 = MD5.getFileMD5(new File("/sdcard/download/aaa1.jpg"));
if (strFile1Md5.equals(strFile2Md5)){
Log.d("qf","两个文件一致");
}
- BASE64
- 准确来讲,它是一种编码方式,有些协议传输非ASCII编码的时候需要使用base64编码后才能传输
- 可逆的,很容易解码
public class BASE64Util {
public static String encrypt(String strSrc){
String strDes = null;
//默认编码utf-8
byte[] btMsg = Base64.encode(strSrc.getBytes(), Base64.DEFAULT);
strDes = new String(btMsg);
return strDes;
}
public static String decrypt(String strEncode){
String strDes = null;
strDes = new String(Base64.decode(strEncode.getBytes(),Base64.DEFAULT));
return strDes;
}
}
- 对称加密——DES
- 真正的加密算法,带密钥,加密和解密使用相同的密钥
- 对称加密优点是算法公开、计算量小、加密速度快、加密效率高
- 双方都保存秘钥,其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担
- DES使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法
- 非对称加密--RSA
1、用RSA算法生成一对密钥,公钥发放给外部客户,私钥自己保管;有以下应用场景:
【公钥加密、私钥解密】或者【私钥签名、公钥验证】
2、非对称加解密的理解:
- 小明想秘密给小英发送消息
- 小英手里有一个盒子(public key),这个盒子只有小英手里的钥匙(private key)才打得开
- 小英把盒子送给小明(分发公钥)
- 小明写好消息放进盒子里,锁上盒子(公钥加密)
- 小明把盒子寄给小英(密文传输)
- 小英用手里的钥匙打开盒子,得到小明的消息(私钥解密)
- 假设小刚劫持了盒子,因为没有小英的钥匙,他也打不开