基于数据传输的安全性,看了些java相关加解密的博客和数据,参考了些某些官方提供的API,做出了如下加密设计:【加密解密结构图仅client端部分,service端暂没有画流程图】
AES&RAS加密设计.png
关于此种加密设计的一些自己的看法:
提高数据的加密效率:
1.使用AES加密每次请求随机生成AES_KEY,对明文进行加密,AES加密比起RAS加密效率上高很多,但是安全性要低很多。
2.使用RAS对AES_KEY加密,之所以不直接使用RAS对数据加密,是因为数据的可变性,不定长度的数据,使用RAS非对称加密的时间不定,数据量越大加密时间越长,但是生成的AES_KEY固定位128字节,保证了效率问题,和安全问题。
3.使用RAS签名,保证发送方,和防止数据篡改。
返回数据加密设置:
1.服务端返回数据,理应可以使用相同的加密方式,对数据进行加密加签,再进行Base64转码,返回client端。但是由于加密耗时并消耗资源,返回数据最终再客户端还是要进行展示的,所以加密的意义并不大,但是又要防止实用工具进行返回数据的拦截篡改,只采用AES加密即可,又做到了安全,要保证了效率。
↑↑↑↑↑↑↑↑↑↑↑↑以上仅代表个人看法。
近期会持续更新ing……