密码技术学习(2)–密码技术概述

  • 加密和解密?
  • 密码技术的分类?
  • 加密算法和密钥有什么区别?
  • 为什么不要使用自制加密算法?
  • 理论上无法破解的密码算法

加密和解密

加密通俗的讲,就是将信息转换成另外一种形式,达到其他人即使获得了加密后的数据,他也看不懂。

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容–百度百科

解密顾名思义就是将加密后的数据转换为之前的信息,让人可以看懂。 
解密和加密互为逆运算。

密码技术的分类

时间划分

  • 古典密码 以字符为加密单位 置换和替换是古典算法的两个特点 
    • 置换 不改变明文信息,打乱明文顺序。比如滚筒密码
    • 替换 将明文按照一定的规则转换为密文。单表替换、凯撒密码、Enigma等
  • 现代密码 以信息块为加密单位 公开算法 对密钥保密 置换和替换同样是现代密码不可或缺的技术 
    • DES算法
    • RSA算法

密钥类型划分

  • 对称加密系统:加密密钥和解密密钥相同
  • 非对称加密(公钥加密)系统:加密密钥和解密密钥不同

按加密方式划分

  • 分组加密 将明文分组,一次加密一组明文
  • 流加密 一次加密一位或一个字节明文

加密算法和密钥有什么区别?

加密算法指的是加密的方式,是加密的逻辑,是加密的共性,是明文变换成密文的函数。 
当然解密算法指的是解密的方式,是解密的逻辑,是解密的共性,是密文变换成明文的函数。 
加密算法和解密算法可以是同一个。他们合成密码算法 
密钥指的是加密算法中将明文转换为密文的参数,也可以是解密算法中将密文转化为明文的参数。

加密技术 算法 密钥
单表替代密码 按照字母进行替换 替换表
对称加密 DES 密钥
非对称加密 RSA 公钥与私钥

不能每次进行加密都生成一个信息的密码算法,我们希望能够复用密码算法。

为什么不要使用自制加密算法?

很多人使用自制的加密算法,认为只要算法保密,那么就是安全的。但是千万不要这样想

  • 首先我们不是专业的密码学家,不可能简单的设计出安全的密码
  • 其次算法不可能一直保密,总会有“好心人”将你的算法公开,那时你该怎么办
  • 很多工具都可以反编译源码等,可以看到执行逻辑,算法总会被破解

使用公开算法的好处

  • 这是密码学家经过精心设计的
  • 会经过全世界的使用者、破译者来使用、攻击,有问题会很快暴露和改进
  • 算法大家都知道,只要对密钥进行保密就行了

理论上无法破解的密码算法

一次性密码本(One-time Pad;OTP)是密码学中的一种加密算法。是以随机的密钥(key)组成明文,且只使用一次。这种方法在1882年被弗兰克·米勒(Frank Miller)发现,并沿用至今–百度百科

他无法破解的原因是

  • 密钥只是用一次
  • 即使使用暴力手段破解之后,也无法判断,哪些解密后的数据是正确明文

很少使用的原因

  • 密钥的配送 如果能够安全传送密钥,直接安全传送消息多好
  • 必须是完全随机的密钥,暂未发现可实现方式

参考书籍和文章

关于本章内容,参考了一下书籍和文章

  1. Java加密与解密的艺术 链接
  2. 图解密码技术-第二版 链接 第三版链接

本系列其他文章

密码技术学习系列文章

猜你喜欢

转载自blog.csdn.net/laozhaishaozuo/article/details/81812281