密码学研究-基本知识
2013-10-23 12:50
197 查看
引入:
最近项目组用到了一些密码学相关的知识,虽然这些话题我几年前就很熟悉了,并且还经历过很多经典算法破解的新闻,背景,细节,但是这里我还是希望炒下冷饭,方便以后直接拿来用。其实密码学这个话题非常重要,如果大家经常看谍战剧,尤其是牛小峰主演的诸多谍战剧,就不难发现密码学其实很重要,而且密码/密码本/发报机经常是谍报人员嘴上说最多的东西,也是敌我双方争夺的重点。本文主要讲密码学中的经典概念,我自己用visio画了一些图,以方便读者理解
1.现代密码学设计的基本原则-科克霍夫原则(数据的安全基于密钥而不是算法的保密)
这个原则是有道理的,因为算法是一个活的东西,它总是在不断的进步中,如果算法保密了,那么就缺少了对于算法的研究,从而没办法去更新或者设计更好的算法了。从历史上来看,以前红极一时的许多算法都被破解,然后被更可靠的算法所替代。所以,开放算法,对于整个密码学的发展是有好处的。对于密码的使用者来说,如果算法公开了,还可以让专家去评审算法,从而杜绝算法设计者故意在其算法中“开后门”。
2.从密码学的加密方式上看,密码学分为两大类,单向加密和双向加密。双向加密又分为两种:一种是对称加密,一种是非对称加密。如何去理解呢?
单向表示只有明文的加密过程,不用去处理密文。双向表示不仅有明文的加密过程,而且在适当时候还会对密文解密从而还原明文。
对称和非对称,其研究的过程都是加密和解密。如果加密密钥和解密密钥是同一个,那么这算对称,如果加密密钥和解密密钥不是同一个,那么算非对称。
3.单向加密,对称加密,非对称加密的典型的算法。
4.加密方式的理解示意图(为了方便区分和理解,我所有消息发送者以及动作都用蓝色表示,接收者和动作都用黄色表示):
对于单向加密:
对于对称加密:
对于非对称加密:
特别注意:公钥加密的内容必须私钥解密,私钥加密的内容必须公钥解密。
最近项目组用到了一些密码学相关的知识,虽然这些话题我几年前就很熟悉了,并且还经历过很多经典算法破解的新闻,背景,细节,但是这里我还是希望炒下冷饭,方便以后直接拿来用。其实密码学这个话题非常重要,如果大家经常看谍战剧,尤其是牛小峰主演的诸多谍战剧,就不难发现密码学其实很重要,而且密码/密码本/发报机经常是谍报人员嘴上说最多的东西,也是敌我双方争夺的重点。本文主要讲密码学中的经典概念,我自己用visio画了一些图,以方便读者理解
1.现代密码学设计的基本原则-科克霍夫原则(数据的安全基于密钥而不是算法的保密)
这个原则是有道理的,因为算法是一个活的东西,它总是在不断的进步中,如果算法保密了,那么就缺少了对于算法的研究,从而没办法去更新或者设计更好的算法了。从历史上来看,以前红极一时的许多算法都被破解,然后被更可靠的算法所替代。所以,开放算法,对于整个密码学的发展是有好处的。对于密码的使用者来说,如果算法公开了,还可以让专家去评审算法,从而杜绝算法设计者故意在其算法中“开后门”。
2.从密码学的加密方式上看,密码学分为两大类,单向加密和双向加密。双向加密又分为两种:一种是对称加密,一种是非对称加密。如何去理解呢?
单向表示只有明文的加密过程,不用去处理密文。双向表示不仅有明文的加密过程,而且在适当时候还会对密文解密从而还原明文。
对称和非对称,其研究的过程都是加密和解密。如果加密密钥和解密密钥是同一个,那么这算对称,如果加密密钥和解密密钥不是同一个,那么算非对称。
3.单向加密,对称加密,非对称加密的典型的算法。
加密方式 | 主要使用场合 | 典型算法 |
单向加密 | 校验消息的完整性 | MD5,SHA,MAC |
对称加密 | 用于数据存储的加密 | DES,AES |
非对称加密 | 用于数据传输的加密 | RSA,DSA,DH |
对于单向加密:
对于对称加密:
对于非对称加密:
特别注意:公钥加密的内容必须私钥解密,私钥加密的内容必须公钥解密。
相关文章推荐
- 【转载】密码学研究-基本知识
- Android自定义View研究(二) -- 绘图的基本知识
- 【windows C语言程序设计】 使用ListBox控件,基本知识的准备和研究(一)
- 【windows C语言程序设计】 使用ListBox控件,基本知识的准备和研究(二)
- 密码学需要了解的一些基础术语和基本知识
- Android中继承View的研究(二) -- 绘图的基本知识
- Android中继承View的研究(二) -- 绘图的基本知识
- Android自定义View研究(二) -- 绘图的基本知识
- Android中继承View的研究(二) -- 绘图的基本知识
- Java IO 基本知识(2)
- hadoop一些基本知识——Hadoop reducer类的阅读
- LCD 基本知识
- javascript正则表达式的基本知识
- Silverlight动画的基本知识、关键帧动画
- PHP基本知识收集
- Cocos2d-X如何安装 并创建一个项目以及 cocos2d-X的基本知识(1)
- Spring框架的基本入门知识笔记(2)
- LDAP 查询基本知识
- 数据结构-线性表(顺序表与链表的基本知识 以及ArrayList 源码分析)
- Linux-USB学习 -- 基本知识(一)