1、MD5
MD5,全名Message Digest Algorithm 5 ,中文名为消息摘要算法第五版,一种不可逆的hash算法,常用于只需加密无需解密的数据上,比如用户密码,也常用来保证数据的完整性,因为数据被篡改后,其加密后的MD5也会随之改变(不考虑碰撞的情况下),对比篡改前的MD5可确定数据是否完整;
2、RSA
非对称加密算法,RSA的安全性依赖于大数的分解,公钥和私钥都是两个大素数(大于100的十进制位)的函数。公钥对数据进行加密后传输,接收方用私钥进行解密,而从一个公钥和密文推断出明文的难度等同于分解两个大素数的积。由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。
3、AES
对称加密算法,此加密方式最大的威胁在于密钥的保存和传输安全,所以一般采用随机动态密钥和非对称加密算法RSA协商密钥,Android客户端实现步骤如下:
①.客户端随机生成AES密钥;
②.利用RSA公钥加密AES密钥并传至服务端用对应私钥解密,至此,服务端确认了此次交互的AES密钥;
③.双方已确认了AES密钥,接下来客户端直接用这个密钥加密传输即可。
4、异或
常用的简单可逆数据加密方式,明文与密钥进行异或操作得到密文,密文与密钥进行一次异或操作则还原明文。
5、Https
Https是在Http基础上加入了TLS/SSL协议(TLS是SSL是升级版),负责身份验证(证书认证)、信息加密和完整性校验(数字摘要)的安全功能。
它们的区别如下:
1、https协议需要到ca申请证书,一般免费证书很少,需要交费,而自签名证书可用keytool生成,但需要客户端添加信任,否则会报SSLHandshakeException异常。
2、http是超文本传输协议,信息是明文传输,https 则是具有安全性的SSL/TSL加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL/TSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
证书内容及验证:
证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;
这个签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用CA的私钥对信息摘要进行加密,密文即签名。
客户端读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法;
总的来说,Https的一个比较概括的流程为如下三步: