(写在前面的话:之前负责了一个关于数据安全接入的模块,涉及到了数据的加密解密,文件校验,下载落地,入库等。在wannercry肆虐之际,更深刻体会到数据安全的重要意义。鉴于此,不才受邀在今天给团队成员统一普及了一下数据安全方面的概念,重点给Java同事分享了一下基于Java的数据加密解密实现和梁栋的《java加密与解密的艺术》。有感于这次的wannercry风暴,特将今天的培训整理出来和大家分享一下,诚邀勘误指正。 培训资料:参考了梁栋的《java加密与解密的艺术》,大家也可以自行买这本书阅读,应该感谢梁栋为我们提供了一本好书。)
一,散列函数
散列函数,又称哈希函数,消息摘要函数,单向函数。散列函数不存在秘钥的概念,具有单向性(密文无法解密成明文),即不可逆性。应用场景为消息摘要认证技术。
散列函数的特点:
- 消息长度不受限制
- 计算复杂度低(对于给定的消息,很容易得到散列结果)
- 单向性(散列值的不可逆性)
- 抗弱碰撞性(对于已知的消息及其散列值,无法找到另一条消息计算出和当前消息相同的散列值)
- 抗强碰撞性(任意两个不同的消息的散列值必定不同)
二、经典散列函数算法
- MD算法家族
- SHA算法家族
- MAC算法家族