您的位置:首页 > 编程语言 > Java开发

密码学研究-基本知识

2013-10-23 12:50 197 查看
引入:
最近项目组用到了一些密码学相关的知识,虽然这些话题我几年前就很熟悉了,并且还经历过很多经典算法破解的新闻,背景,细节,但是这里我还是希望炒下冷饭,方便以后直接拿来用。其实密码学这个话题非常重要,如果大家经常看谍战剧,尤其是牛小峰主演的诸多谍战剧,就不难发现密码学其实很重要,而且密码/密码本/发报机经常是谍报人员嘴上说最多的东西,也是敌我双方争夺的重点。本文主要讲密码学中的经典概念,我自己用visio画了一些图,以方便读者理解

1.现代密码学设计的基本原则-科克霍夫原则(数据的安全基于密钥而不是算法的保密)
这个原则是有道理的,因为算法是一个活的东西,它总是在不断的进步中,如果算法保密了,那么就缺少了对于算法的研究,从而没办法去更新或者设计更好的算法了。从历史上来看,以前红极一时的许多算法都被破解,然后被更可靠的算法所替代。所以,开放算法,对于整个密码学的发展是有好处的。对于密码的使用者来说,如果算法公开了,还可以让专家去评审算法,从而杜绝算法设计者故意在其算法中“开后门”

2.从密码学的加密方式上看,密码学分为两大类,单向加密和双向加密。双向加密又分为两种:一种是对称加密,一种是非对称加密。如何去理解呢?
单向表示只有明文的加密过程,不用去处理密文。双向表示不仅有明文的加密过程,而且在适当时候还会对密文解密从而还原明文。
对称和非对称,其研究的过程都是加密和解密。如果加密密钥和解密密钥是同一个,那么这算对称,如果加密密钥和解密密钥不是同一个,那么算非对称。

3.单向加密,对称加密,非对称加密的典型的算法。
加密方式主要使用场合典型算法
单向加密校验消息的完整性MD5,SHA,MAC
对称加密用于数据存储的加密DES,AES
非对称加密用于数据传输的加密RSA,DSA,DH
4.加密方式的理解示意图(为了方便区分和理解,我所有消息发送者以及动作都用蓝色表示,接收者和动作都用黄色表示):

对于单向加密:



对于对称加密:




对于非对称加密:




特别注意:公钥加密的内容必须私钥解密,私钥加密的内容必须公钥解密。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 知识 密码学