对称密码学:01 概述
来源:互联网 发布:java高级架构师实战 编辑:程序博客网 时间:2024/06/05 23:52
密码学几乎专指加密(encryption)算法,将普通信息(明文,plaintext)转化成难以理解的资料(密文,ciphertext)的过程。;解密(decryption)算法则是反过程:密文转换会明文。
1.1.1 密钥加/解密系统模型
所谓的密码学就是指对称密钥密码系统。因为加/解密用的是同一把密钥,所以还有另一个称呼,单一密钥密码系统。
一般一个密钥包含下面几个部分
- 消息空间 M(Message)
- 密文空间 C(Ciphertext)
- 密钥空间 K(Key)
- 加密算法 E(Encryption Algorithm)
- 解密算法 D(Decryption Algorithm)
它们之间通常是下面的关系:
EK1(M) = C
Dk2(C) = M
DK2(EK1(M)) = M
消息空间中的消息M(明文)通过加密的密钥K1控制的加密算法加密后得到密文C。
密文C通过解密密钥K2控制的解密算法恢复会原来的明文M。
1.1.2 古典密码
在以前,没有计算机,计算能力低下。当时密码学都是一些基于字符的密码算法。密码算法基本是互相替换(Substitution)或者相互置换(Transposition)。一些好一点的密码算法,就会接合两者,进行多次运算。
1. 替代密码
替代密码就是明文中的每一个字符被换为密文中的另一个字符。接受者对密文进行逆向替代,就可以恢复出原来的明文了。在古典密码学中,有三类替代密码:
- 单表替代密码
- 多表替代密码
- 多字母替代密码
单表替代密码,就是一个字符对应一个相应的字符。凯撒密码就是一种单表替代密码,也是一种移位替代密码。
凯撒密码是对应英文的26个字母向后以移3位。
比如,明文是:coskimo
那么出来的密文是:FRVNLPR
如果将26个字母分别对应0~25,那么凯撒密码变化为
加密:E( M ) = ( M + 3 ) mod 26
解密:D( C ) = ( C – 3 ) mod 26
在这里凯撒密码的密钥 K = 3。所以这个的一般式为
加密:E( M ) = ( M + K ) mod 26
解密:D( C ) = ( C – K ) mod 26
很明显,这个密码很脆弱。
首先,简单的单表替代没有掩盖明文不同字母的出现的频率;
其次,移位代替的密钥空间有限,只有25个密钥,利用暴力破解攻击就可以解出。
多表代替密码是一系列的替代表依次对明文消息的字母进行替代的加密方法。而多字母替换
2. 置换密码
在置换密码中,明文和密文的字母保持相同,但顺序被打乱。在简单的纵行置换密码中,明文以固定的宽度水平的写在一张纸上,密文按垂直方向读出;解密就是将密文按相同的宽度垂直写在纸上,然后水平读出明文。比如下面的例子:
明文: coskimo is a brand new website which focus on information of Ubuntu and some tutorial.
coskimoisabrandnewwebsitewhichfocusoninformationofubuntuandsometutorial密文: criutuo oatsiar sneooni kdwnnda inhiosl meinfo owcfum iwhobe sefrut abomnu bscatt
版权声明
Moriarty_221为本文的CSDN博客
如未注明,均为原创,转载请注明出处
转载请注明:Coskimö » 对称密码学:01 概述
版权所有 © 科斯基摩 | 本网站采用cc by-nc-sa 3.0协议进行授权
- 对称密码学:01 概述
- 密码学概述
- 密码学概述
- 密码学概述
- 密码学概述
- 密码学概述
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- 对称密码学的密钥交换
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- .NET中的密码学--对称加密
- 密码学常见基本概念-对称加密
- 密码学安全算法--对称加密算法
- 软件密码学基础--对称加密
- 单链表操作,创建,遍历,插入,删除,排序等操作
- linux 基础
- 什么是物联网
- 过年回来, 我的网络不可用了---顺便实战扯扯拨号上网和无线路由器的配置(产生所谓的wifi信号)
- Failed password for root from xxxxxx port 52684 ssh2防范处理
- 对称密码学:01 概述
- Transaction
- Mysql 出现Error 1118的一种解决方法
- POJ 题目1861 Network(最小生成树)
- C/C++ IDE的选择
- iOS单例模式
- Android开源库与设计模式开源组SAOS建立
- va_start和va_end使用详解
- LCA模板