密码学研究-基本知识

简介:

引入:

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


1.现代密码学设计的基本原则-科克霍夫原则(数据的安全基于密钥而不是算法的保密)

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


2.从密码学的加密方式上看,密码学分为两大类,单向加密和双向加密。双向加密又分为两种:一种是对称加密,一种是非对称加密。如何去理解呢?

单向表示只有明文的加密过程,不用去处理密文。双向表示不仅有明文的加密过程,而且在适当时候还会对密文解密从而还原明文。

对称和非对称,其研究的过程都是加密和解密。如果加密密钥和解密密钥是同一个,那么这算对称,如果加密密钥和解密密钥不是同一个,那么算非对称。


3.单向加密,对称加密,非对称加密的典型的算法。

加密方式 主要使用场合 典型算法
单向加密 校验消息的完整性 MD5,SHA,MAC
对称加密 用于数据存储的加密 DES,AES
非对称加密 用于数据传输的加密 RSA,DSA,DH



4.加密方式的理解示意图(为了方便区分和理解,我所有消息发送者以及动作都用蓝色表示,接收者和动作都用黄色表示):


对于单向加密:

124916225.png

对于对称加密:

144715197.png


对于非对称加密:


151645820.png

特别注意:公钥加密的内容必须私钥解密,私钥加密的内容必须公钥解密。





本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1313864,如需转载请自行联系原作者
目录
相关文章
|
JavaScript 测试技术 C#
【C#】【xUnit】【Moq】.NET单元测试Mock框架Moq初探!
在TDD开发模型中,经常是在编码的同时进行单元测试的编写,由于现代软件开发不可能是一个人完成的工作,所以在定义好接口的时候我们就可以进行自己功能的开发(接口不能经常变更),而我们调用他人的功能时只需要使用接口即可。
5661 0
|
小程序 JavaScript API
小程序云开发实战六:云数据库读取的数据显示在小程序端列表里
小程序云开发实战六:云数据库读取的数据显示在小程序端列表里
327 0
|
NoSQL 网络安全 MongoDB
MongoDB 备份与恢复
MongoDB 中的数据备份和恢复主要依赖于 `mongodump` 和 `mongorestore` 两个命令。`mongodump` 用于备份数据,它可以将数据导出为 BSON 格式的文件,支持多种部署类型,包括独立运行部署、副本集、分片集群等。通过指定不同的参数,如 `--uri`、`--host`、`--port` 等,可以连接到不同的 MongoDB 实例。备份时还可以指定要备份的数据库、集合等。
446 1
|
Ubuntu Oracle 关系型数据库
Linux操作系统最著名的两大系列Red Hat和Debian
Linux操作系统最著名的两大系列Red Hat和Debian
|
Linux Docker 容器
mac和linux安装docker
mac和linux安装docker
343 0
|
SQL 安全 BI
BUG优先级定义各种P级别
BUG优先级定义各种P级别
|
Java
编写Java程序,在电脑硬盘里,查看 f:\text4\name 目录是否存在。
编写Java程序,在电脑硬盘里,查看 f:\text4\name 目录是否存在。
246 0
|
编解码 UED
短视频APP开发应该注意些什么
短视频相比较传统的文字、图片宣传而言,更加具有趣味性,传播范围广,又因为其内容短小精悍去又不失价值和意义,深受投资者的喜爱,无数商家也加入到短视频APP开发的行业中来。那短视频APP开发过程中都是有哪些需要注意的呢?
1793 0