‘壹’ 梁、柱钢筋的加密区怎么计算
加密范围是按照规范规定来的,没有具体的计算公式。
柱箍筋加密范围是:
底层柱(底层柱的主根系指地下室的顶面或无地下室情况的基础顶面)的柱根加密区长度应取不小于该层柱净高的1/3,以后的加密区范围是按柱长边尺寸(圆柱的直径)、楼层柱净高的1/6,及500mm三者数值中的最大者为加密范围。
梁箍筋加密范围:
加密范围从柱边开始,一级抗震等级的框架梁箍筋加密长度为2倍的梁高,二、三、四级抗震等级的框架梁箍筋加密长度为1.5倍的梁高,切均要满足大于500mm,如果不满足大于500mm,按500mm长度进行加密。
(1)圆柱换位加密算法扩展阅读:
加密范围是按照规范规定来的,没有具体的计算公式。柱子和梁的加密区箍筋的设置方法为:
1、柱箍筋加密范围是:
底层柱(底层柱的柱根系指地下室的顶面或无地下室情况的基础顶面)的柱根加密区长度应取不小于该层柱净高的1/3,以后的加密区范围是按柱长边尺寸(圆柱的直径)、楼层柱净高的1/6,及500mm三者数值中的最大者为加密范围。
2、梁箍筋加密范围:
加密范围从柱边开始,一级抗震等级的框架梁箍筋加密长度为2倍的梁高,二、三、四级抗震等级的框架梁箍筋加密长度为1.5倍的梁高,而且加密区间总长均要满足大于500mm,如果不满足大于500mm,按500mm长度进行加密。
3、详见国家建筑标准设计图集《16G101-1》
4、具体加密高度还应依据结构设计并应满足规范要求。
加密区是对于抗震结构来说的。根据抗震等级的不同,箍筋加密区设置的规定也不同。一般来说,对于钢筋混凝土框架的柱子的端部和每层梁的两端都要进行加密。
抗震等级为一级时,加密区长度为2倍的梁高和500mm取大值,抗震等级为二~四级时,加密区长度为1.5倍的梁高和500mm取大值。柱子加密区长度应取柱截面长边尺寸(或圆形截面直径)、柱净高的1/6和500mm中的最大值。
但最底层(一层)柱子的根部应取不小于1/3的该层柱净高。当有刚性地面时,除柱端箍筋加密区外尚应在刚性地面上、下各500mm的高度范围内加密。
‘贰’ 计算机密码学中有哪些加密算法
传统密码学Autokey密码 置换密码 二字母组代替密码 (by Charles Wheatstone) 多字母替换密码 希尔密码 维吉尼亚密码 替换密码 凯撒密码 ROT13 仿射密码 Atbash密码 换位密码 Scytale Grille密码 VIC密码 (一种复杂的手工密码,在五十年代早期被至少一名苏联间谍使用过,在当时是十分安全的) 分组密码包括 DES、IDEA、SAFER、Blowfish 和 Skipjack — 最后一个是“美国国家安全局(US National Security Agency,NSA)”限制器芯片中使用的算法。 置换加密法,将字母的顺序重新排列;替换加密法,将一组字母换成其他字母或符号。 DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合 RSA:由 RSA 公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的MD5。 对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
‘叁’ 换位加密法的详细简介
重新排列明文中的字母位置的加密法。
密钥排列顺序:
比如,我要对“COMMAND1”加密,密钥是“ABCD”,可以列出一个表格:
COMMAND1
ABCDABCD
就是用ABCD分别对上这个词语,不够就循环对上,就像这样,然后看到他们对应的字母:A对应C和 A,B对应O和N,C对应M和D,D对应M和1。
然后对他们进行换位加密,也就是将表格的第二行依据密钥排列顺序进行排序:
AABBCCDD
这样,加密后的密文就出来了:CAONMDM1
如果最后一行多出来几个密钥字母,就用A,B,C......代替,之后再进行加密。
比较经典的是柱形的换位加密
比如说明文是: WE ARE DISCOVERED. FLEE AT ONCE.
在加密的时候,首先确定长度和顺序,比如确定长度是6个一排,加密后顺序是6 3 2 4 1 5,于是开始加密:
6 3 2 4 1 5
W E A R E D
I S C O V E
R E D F L E
E A T O N C
E
得到像这样的
于是得到密文:EVLNA CDTES EAROF ODEEC WIREE
‘肆’ 德维亚里密码是什么
目 录
译者序
前言
第一部分 密码编码学
第1章 导论 5
1.1 密码编码学和隐写术 5
1.2 符号码 5
1.3 公开代码:伪装 8
1.4 暗示 11
1.5 公开代码:利用虚码掩蔽 12
1.6 公开代码:采用栅格的隐藏 15
1.7 密码编码的方法的分类 16
第2章 密码编码学的方法和目标 18
2.1 密码编码学的本质 18
2.1.1 加密与解密方法 18
2.1.2 加密与解密机 20
2.1.3 密码技术与文学 20
2.1.4 密码研究机构 21
2.2 加密 22
2.2.1 词汇表、字符集 22
2.2.2 加密和解密 22
2.2.3 归纳定义 23
2.3 密码体制 23
2.3.1 基本概念 23
2.3.2 加密和编码 24
2.3.3 文本流 24
2.4 多音码 25
2.4.1 多音码 25
2.4.2 字间空格 26
2.5 字符集 26
2.5.1 明文字符集 26
2.5.2 技术字符集 27
2.5.3 同态的情形 28
2.6 密钥 28
2.6.1 密钥需要变化 28
2.6.2 分组 28
2.6.3 同构 29
2.6.4 香农 29
第3章 加密方法:简单代替 30
3.1 V(1)→W的情形 30
3.1.1 V→W:没有多名码和空字符的加密 30
3.1.2 V(1)→W:有多名码和空字符的加密 31
3.2 特殊情况:V玍 31
3.2.1 自反置换 32
3.2.2 电路实现 33
3.2.3 单循环置换 33
3.2.4 混合密表 34
3.2.5 借助口令字构造密表 35
3.2.6 记数 35
3.2.7 圆盘加密和滑尺加密 36
3.2.8 带滑动窗的循环字符 36
3.3 V(1)→Wm:多叶简单代替 36
3.3.1 m=2双叶简单代替:V(1)→W2 36
3.3.2 m=3三叶简单代替:V(1)→W3 38
3.3.3 m=5五叶简单代替:V(1)→W5 38
3.3.4 m=8八叶简单代替:V(1)→W8 39
3.4 V(1)→W(m)的一般情况:夹叉式加密 39
3.4.1 约束条件 39
3.4.2 俄国的接合 41
第4章 加密方法:多字母代替和编码 42
4.1 V2→W(m)的情形 42
4.1.1 字母 42
4.1.2 双叶双码加密步V2玍2 42
4.1.3 三叶双码代替V2→W3 46
4.2 Playfair和Delastelle的特殊情况:
分层方法 47
4.2.1 Playfair密码 47
4.2.2 修改后的PLAYFAIR 49
4.2.3 Delastelle密码 49
4.3 V3→W(m)的情形 50
4.3.1 GioPPi 50
4.3.2 Henkels 50
4.4 V(n)→W(m)的一般情况:密本 51
4.4.1 词汇手册 52
4.4.2 两部本密本 53
4.4.3 现代密本 55
4.4.4 电报代码 56
4.4.5 商用密本 57
4.4.6 检错和纠错编码 58
4.4.7 短命的密本 58
4.4.8 战壕密码 58
第5章 加密方法:线性代替 60
5.1 自反线性代替 61
5.2 齐次线性代替 62
5.2.1 希尔 62
5.2.2 非齐次情况 62
5.2.3 计数 63
5.2.4 矩阵对的构造 64
5.2.5 自反矩阵的构造 65
5.3 二元线性代替 65
5.4 一般线性变换 65
5.5 线性代替的分解 66
5.6 十选一字母表 68
5.7 带有十进制和二进制数的线性代替 69
5.7.1 N=10的情况 69
5.7.2 N=2的情况: 69
5.7.3 图灵 70
第6章 加密方法:换位 71
6.1 最简单的方法 71
6.1.1 Crab 71
6.1.2 首字母互换 71
6.1.3 路径抄写 72
6.1.4 格子变换 73
6.2 纵行换位 74
6.2.1 口令字 74
6.2.2 矩形方案 75
6.2.3 两步法 75
6.2.4 Ubchi 76
6.2.5 置换的构造 76
6.3 变位字 77
6.3.1 历史 77
6.3.2 惟一性 78
第7章 多表加密:加密表族 80
7.1 迭代代替 80
7.1.1 同态 80
7.1.2 循环置换 81
7.2 移位和旋转密表 81
7.2.1 移位加密表 81
7.2.2 旋转加密表 82
7.2.3 伴随加密表 82
7.2.4 加密表的数量 83
7.3 转轮密码机 83
7.3.1 背景 84
7.3.2 自反转轮机 85
7.3.3 国防军的方案 86
7.3.4 TYPEX 89
7.3.5 ENIGMA代替 89
7.4 移位标准加密表:维吉尼亚密表
和博福特密表 91
7.4.1 维吉尼亚加密步 91
7.4.2 EYRAUD 92
7.4.3 博福特加密步 92
7.4.4 逆向维吉尼亚加密步和
逆向博福特加密步 92
7.4.5 波他加密步 93
7.5 非相关加密表 93
7.5.1 置换 94
7.5.2 Gripenstierna 94
7.5.3 MULTIPLEX 95
7.5.4 拉丁方要求 98
第8章 多表加密:密钥 101
8.1 早期使用周期密钥的方法 101
8.1.1 艾伯蒂 101
8.1.2 特理特米乌斯 101
8.2 双密钥 103
8.2.1 波他 103
8.2.2 维吉尼亚 103
8.2.3 三重密钥 103
8.3 弗纳姆加密 103
8.3.1 逐比特加密 104
8.3.2 弗纳姆 104
8.3.3 进位问题 104
8.4 准非周期密钥 105
8.4.1 繁琐的多表加密 105
8.4.2 多表加密的安全性 105
8.4.3 渐进加密 106
8.4.4 “规则”的转轮运动 106
8.5 密钥序列的产生机器—密钥生成器 106
8.5.1 惠斯通 106
8.5.2 不规则的尝试 106
8.5.3 由缺口和棘轮控制的轮运动 108
8.5.4 打字密码机 109
8.5.5 赫本 110
8.5.6 亚德利 111
8.5.7 绿密、红密和紫密 112
8.6 线外形成密钥序列 115
8.6.1 矩阵方幂 115
8.6.2 二元序列 115
8.7 非周期密钥 116
8.7.1 错觉 116
8.7.2 自身密钥 117
8.7.3 明文函数 119
8.7.4 流密码 119
8.8 单个的一次性密钥 120
8.8.1 弗纳姆 120
8.8.2 无尽头和无意义 120
8.8.3 坏习惯 120
8.8.4 不可破译的加密 121
8.8.5 不可破译密钥序列的生成 121
8.8.6 实际使用 121
8.8.7 误用 121
8.9 密钥协商和密钥管理 122
8.9.1 背景 122
8.9.2 密钥协商 122
8.9.3 密钥管理 124
第9章 方法类的合成 125
9.1 群性质 125
9.1.1 密钥群 125
9.1.2 方法的合成 126
9.1.3 T52 126
9.1.4 SZ 126
9.2 复合加密 127
9.2.1 复合加密 127
9.2.2 复台加密的需求 127
9.2.3 插接板 128
9.2.4 ADFGVX 128
9.2.5 ENIGMA复合加密 128
9.3 加密方法的相似性 128
9.4 香农的“和面团法” 128
9.4.1 混淆和扩散 129
9.4.2 Heureka 130
9.4.3 香农 133
9.4.4 分层方法 133
9.4.5 Polybios 133
9.4.6 Koehl 133
9.4.7 其他方法 134
9.5 数学运算产生的混淆和扩散 134
9.5.1 剩余运算 134
9.5.2 方幂 135
9.5.3 双向通信 137
9.5.4 普利尼·厄尔·蔡斯 137
9.6 DES和IDEA 137
9.6.1 DES算法 137
9.6.2 雪崩效应 140
9.6.3 DES的操作模式 141
9.6.4 DES的安全性 141
9.6.5 DES的继承者 142
9.6.6 密码系统和芯片 143
第10章 公开加密密钥体制 145
10.1 对称和非对称的加密方法 145
10.1.1 对称方法 145
10.1.2 非对称方法 146
10.1.3 加密和签名方法 146
10.2 单向函数 147
10.2.1 严格单向函数 147
10.2.2 陷门单向函数 148
10.2.3 效率界限 148
10.2.4 已知单向函数的例子 149
10.3 RSA方法 152
10.4 对RSA的密码分析攻击 153
10.4.1 qi的分解攻击 153
10.4.2 迭代攻击 154
10.4.3 ei较小时的攻击 156
10.4.4 风险 156
10.4.5 缺陷 157
10.5 保密与认证 157
10.6 公钥体制的安全性 158
第11章 加密安全性 159
11.1 密码错误 159
11.1.1 加密错误 159
11.1.2 技术错误 159
11.1.3 可能字攻击 160
11.1.4 填充 161
11.1.5 压缩 162
11.1.6 人为错误 162
11.1.7 使用容易记忆的口令和密钥 162
11.1.8 密钥的规律性 163
11.1.9 冒名顶替 163
11.1.10 通过非法手段获得密码资料 163
11.1.11 通过战争获得密码资料 163
11.1.12 细节泄露 164
11.2 密码学的格言 164
11.2.1 格言1 165
11.2.2 格言2 166
11.2.3 格言3 166
11.2.4 格言4 167
11.2.5 格言5 167
11.3 香农的标准 168
11.4 密码学和人权 169
11.4.1 问题 169
11.4.2 解决方案 170
11.4.3 托管加密标准 170
11.4.4 NSA 171
11.4.5 国家权力 171
11.4.6 出口政策 171
第二部分 密 码 分 析
第12章 穷尽法的组合复杂度 175
12.1 单表简单加密 175
12.1.1 通常的简单代替
(12.2.1中n=1的特例) 175
12.1.2 十选一采样字母表 176
12.1.3 CAESAR加法(12·2·3中n=1
的情况) 176
12.2 单表多字母加密 176
12.2.1 一般的多字母代替 177
12.2.2 多字母齐次线性代替 177
12.2.3 多字母变换 177
12.2.4 换位 178
12.2.5 单表代替总结 178
12.3 多表加密 179
12.3.1 d个字母表的PERMUTE加密 179
12.3.2 d张表的MULTIPLEX加密 179
12.3.3 d张表的艾伯蒂加密 179
12.3.4 d张表的维吉尼亚或博福特加密 179
12.3.5 多表加密总结 179
12.4 组合复杂度注记 180
12.4.1 杰斐逊和巴泽里埃斯的圆柱加密 180
12.4.2 双重换位 181
12.4.3 维吉尼亚加密 181
12.5 穷尽密码分析 181
12.6 惟一解距离 183
12.7 穷尽攻击的实现 184
12.8 机械化穷尽 185
12.8.1 代替的穷尽 185
12.8.2 换位的穷尽 187
12.8.3 蛮力与不变性 187
第13章 语言分析:模式 188
13.1 重码模式的不变性 188
13.2 加密方法的排除 190
13.3 模式查找 190
13.3.1 例子 190
13.3.2 Aristocrats 191
13.3.3 字母脱漏 192
13.4 多字母模式查找 193
13.5 可能字方法 194
13.5.1 对照表 194
13.5.2 Murphy和J姹er 194
13.5.3 F焗rerbefehl 194
13.5.4 代替选取的不变性 198
13.6 模式词例的自动化穷尽 198
13.6.1 单词列表 198
13.6.2 模式查找 199
13.6.3 模式连接 199
13.6.4 搜索空间的减小 200
13.7 Pangrams 200
第14章 多表情形:可能字 202
14.1 可能字位置的非重合穷尽 202
14.2 可能字位置的二元非重合穷尽 204
14.3 德维亚里攻击 206
14.3.1 部分解密 206
14.3.2 完整解密 207
14.3.3 字母组合 209
14.3.4 德维亚里和吉维埃格 210
14.3.5 历史 211
14.4 可能字位置的Z字形穷尽 212
14.5 同构方法 213
14.5.1 Knox和Candela 213
14.5.2 条形方法 214
14.5.3 部分考查 214
14.5.4 可插接反射器 217
14.5.5 对策 217
14.6 隐藏明文—密文泄露 217
第15章 语言分析:频率 219
15.1 加密方法的排除 219
15.2 模式的不变性 220
15.3 直觉方法:频率轮廓 220
15.4 频率排序 222
15.4.1 频率排序的缺陷 223
15.4.2 频率计数 224
15.5 小集团和模式匹配 225
15.5.1 波动 225
15.5.2 小集团 228
15.5.3 例子 228
15.5.4 经验频率 229
15.6 最优匹配 230
15.6.1 平方距离 230
15.6.2 最优化 230
15.7 多字母频率 231
15.7.1 频率表 231
15.7.2 单词频率 233
15.7.3 位置 235
15.7.4 单词长度 235
15.7.5 单词的格式 235
15.7.6 空格 236
15.8 频率匹配的结合方法 236
15.8.1 例之一 236
15.8.2 例之二 238
15.8.3 最后结果 240
15.8.4 匹配一个尾部 241
15.8.5 一个不同的方法 241
15.9 多字母代替的频率匹配 242
15.9.1 可约情况 242
15.9.2 利用隐含的对称性 242
15.10 各式各样的其他方法 243
15.10.1 一个着名的密码 243
15.10.2 注记 244
15.11 再谈惟一解距离 244
第16章 Kappa和Chi 246
16.1 Kappa的定义和不变性 246
16.1.1 常用语言的Kappa值 247
16.1.2 两个结论 247
16.1.3 Kappa的期望值 248
16.2 Chi的定义和不变性 248
16.2.1 一般结果 249
16.2.2 特殊情形 249
16.2.3 两个结论 249
16.2.4 Chi的期望值 250
16.3 Kappa-Chi定理 250
16.4 Kappa-Phi定理 251
16.4.1 Kappa-Phi定理 251
16.4.2 Phi(T)与Psi(T)的区别 252
16.4.3 两个结论 252
16.4.4 Phi的期望值 253
16.5 字符频率的对称函数 253
第17章 周期性检验 255
17.1 弗里德曼的Kappa试验 256
17.2 多字母的Kappa试验 258
17.3 用机器进行的密码分析 259
17.3.1 穿孔卡的使用 259
17.3.2 锯木架 260
17.3.3 Robinson方法 261
17.3.4 比较器 262
17.3.5 快速分析机RAM 262
17.4 卡西斯基试验 263
17.4.1 早期的方法 263
17.4.2 巴贝奇对破解密码的贡献 264
17.4.3 例子 264
17.4.4 机器 266
17.5 建立深度和库尔巴克的Phi试验 267
17.5.1 列的形成 267
17.5.2 Phi试验忧于Kappa试验 268
17.5.3 例子 268
17.6 周期长度的估计 270
第18章 伴随加密表的校准 272
18.1 轮廓匹配 272
18.1.1 使用深度 272
18.1.2 绘制轮廓图 274
18.2 根据已知加密表校准 275
18.2.1 利用Chi 275
18.2.2 条形方法 276
18.2.3 额外的帮助 276
18.2.4 滑尺方法 278
18.2.5 方法总结 278
18.3 Chi试验:伴随字母表的互相校准 278
18.3.1 例子 279
18.3.2 获得中间密文 279
18.3.3 一个附带结果 282
18.4 原始加密表的恢复 282
18.5 克尔克霍夫斯的位置对称性 284
18.5.1 例子 284
18.5.2 Volap焝 287
18.5.3 令人吃惊的例子 287
18.6 剥离复合加密:求差方法 289
18.6.1 剥离 289
18.6.2 位置的对称性 289
18.6.3 使用机器 290
18.7 密本的破解 291
18.8 口令字的恢复 291
18.8.1 弗里德曼 291
18.8.2 再论弗里德曼 292
第19章 泄露 293
19.1 克尔克霍夫斯的重叠法 293
19.1.1 例子 293
19.1.2 位置对称性 294
19.2 用密钥群加密情况下的重叠法 294
19.2.1 纯加密 295
19.2.2 差 296
19.2.3 循环密钥群 296
19.2.4 其他密钥群 299
19.2.5 特殊情况C52- 299
19.2.6 Tunny 301
19.2.7 Sturgeon 306
19.3 复合加密代码的同相重叠法 307
19.3.1 指标的使用 307
19.3.2 孔策 309
19.4 密文-密文泄露 310
19.4.1 密钥的密文-密文泄露 310
19.4.2 化简为明文-明文的泄露 311
19.5 辛科夫方法 314
19.5.1 密钥的直积 314
19.5.2 中间加密 316
19.5.3 还原 318
19.6 密文-密文泄露:双倍法 319
19.6.1 法国 320
19.6.2 波兰I 321
19.6.3 波兰II 324
19.6.4 英国 327
19.7 明文-密文泄露:反馈循环 330
19.7.1 图灵BOMBE 331
19.7.2 Turing-Welchman BOMBE 334
19.7.3 更多的BOMBE 335
19.7.4 计算机的出现 337
第20章 线性分析 339
20.1 线性多码代替的化简 339
20.1.1 例子 339
20.1.2 一个缺憾 340
20.2 密钥还原 340
20.3 线性移位寄存器的还原 341
第21章 猜字法 344
21.1 换位 344
21.1.1 例子 344
21.1.2 移位的列 346
21.1.3 说明 346
21.1.4 代码组模式 346
21.1.5 虚幻的复杂 346
21.2 双重纵行换位 347
21.3 复合猜字法 347
21.3.1 例子 347
21.3.2 实际应用 348
21.3.3 Hassard、Grosvenor、Holden 348
第22章 总结 350
22.1 成功的破译 350
22.1.1 海军侦察破译处和外交部
密码服务处 351
22.1.2 日本的密码分析机构 353
22.1.3 前苏联陆军总情报局 354
22.2 非授权解密者的操作方式 354
22.2.1 魅力与不幸 354
22.2.2 个性 355
22.2.3 策略 355
22.2.4 隐藏的危险 356
22.2.5 解密的层次 356
22.2.6 暴力 357
22.2.7 预防 357
22.3 虚假的安全 357
22.4 密码学的重要性 358
22.4.1 顾虑 358
22.4.2 新思想 359
22.4.3 破解秘密的实质 359
附录A 公理化信息论 361
‘伍’ 古典密码两种加密方式
古典加密算法:置换密码
置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。
矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。例如,明文为attack
begins
at
five,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式:
a
t
t
a
c
k
b
e
g
i
n
s
a
t
f
i
v
e
根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换:
1
2
3
4
5
6
f
=
1
4
5
3
2
6
根据上面的置换,将原有矩阵中的字母按照第1列,第4列,第5列,第3列,第2列,第6列的顺序排列,则有下面形式:
a
a
c
t
t
k
b
i
n
g
e
s
a
i
v
f
t
e
从而得到密文:aacttkbingesaivfte
‘陆’ 谁帮我介绍下加密对称算法
A.对称加密技术 a. 描述 对称算法(symmetric algorithm),有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的。所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。 b.特点分析 对称加密的优点在于算法实现后的效率高、速度快。 对称加密的缺点在于密钥的管理过于复杂。如果任何一对发送方和接收方都有他们各自商议的密钥的话,那么很明显,假设有N个用户进行对称加密通信,如果按照上述方法,则他们要产生N(N-1)把密钥,每一个用户要记住或保留N-1把密钥,当N很大时,记住是不可能的,而保留起来又会引起密钥泄漏可能性的增加。常用的对称加密算法有DES,DEA等。 B.非对称加密技术 a.描述 非对称加密(dissymmetrical encryption),有时又叫公开密钥算法(public key algorithm)。这种加密算法是这样设计的:用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。之所以又叫做公开密钥算法是由于加密密钥可以公开,即陌生人可以得到它并用来加密信息,但只有用相应的解密密钥才能解密信息。在这种加密算法中,加密密钥被叫做公开密钥(public key),而解密密钥被叫做私有密钥(private key)。 b.特点分析 非对称加密的缺点在于算法实现后的效率低、速度慢。 非对称加密的优点在于用户不必记忆大量的提前商定好的密钥,因为发送方和接收方事先根本不必商定密钥,发放方只要可以得到可靠的接收方的公开密钥就可以给他发送信息了,而且即使双方根本互不相识。但为了保证可靠性,非对称加密算法需要一种与之相配合使用的公开密钥管理机制,这种公开密钥管理机制还要解决其他一些公开密钥所带来的问题。常用的非对称加密算法有RSA等。 (3) 关于密码技术 密码技术包括加密技术和密码分析技术,也即加密和解密技术两个方面。在一个新的加密算法的研发需要有相应的数学理论证明,证明这个算法的安全性有多高,同时还要从密码分析的角度对这个算法进行安全证明,说明这个算法对于所知的分析方法来说是有防范作用的。 三、对称加密算法分析 对称加密算法的分类 对称加密算法可以分成两类:一类为序列算法(stream algorithm):一次只对明文中单个位(有时为字节)加密或解密运算。另一类为分组算法(block algorithm):一次明文的一组固定长度的字节加密或解密运算。 现代计算机密码算法一般采用的都是分组算法,而且一般分组的长度为64位,之所以如此是由于这个长度大到足以防止分析破译,但又小到足以方便使用。 1.DES加密算法 (Data Encryption Standard )
(1) 算法简介
1973 年 5 月 15 日,美国国家标准局 (NBS) 在“联邦注册”上发布了一条通知,征求密码算法,用于在传输和存储期间保护数据。IBM 提交了一个候选算法,它是 IBM 内部开发的,名为 LUCIFER。在美国国家安全局 (NSA) 的“指导”下完成了算法评估之后,在 1977 年 7 月 15 日,NBS 采纳了 LUCIFER 算法的修正版作为新的数据加密标准。
原先规定使用10年,但由于新的加密标准还没有完成,所以DES算法及其的变形算法一直广泛的应用于信息加密方面。 (2) 算法描述 (包括加密和解密)
Feistel结构(画图说明)。
DES 的工作方式:可怕的细节
DES 将消息分成 64 位(即 16 个十六进制数)一组进行加密。DES 使用“密钥”进行加密,从符号的角度来看,“密钥”的长度是 16 个十六进制数(或 64 位)。但是,由于某些原因(可能是因为 NSA 给 NBS 的“指引”),DES 算法中每逢第 8 位就被忽略。这造成密钥的实际大小变成 56 位。编码系统对“强行”或“野蛮”攻击的抵抗力与其密钥空间或者系统可能有多少密钥有直接关系。使用的位数越多转换出的密钥也越多。密钥越多,就意味着强行攻击中计算密钥空间中可能的密钥范围所需的时间就越长。从总长度中切除 8 位就会在很大程度上限制了密钥空间,这样系统就更容易受到破坏。
DES 是块加密算法。这表示它处理特定大小的纯文本块(通常是 64 位),然后返回相同大小的密码块。这样,64 位(每位不是 0 就是 1)有 264 种可能排列,DES 将生成其中的一种排列。每个 64 位的块都被分成 L、R 左右两块,每块 32 位。
DES 算法使用以下步骤:
1. 创建 16 个子密钥,每个长度是 48 位。根据指定的顺序或“表”置换 64 位的密钥。如果表中的第一项是 "27",这表示原始密钥 K 中的第 27 位将变成置换后的密钥 K+ 的第一位。如果表的第二项是 36,则这表示原始密钥中的第 36 位将变成置换后密钥的第二位,以此类推。这是一个线性替换方法,它创建了一种线性排列。置换后的密钥中只出现了原始密钥中的 56 位。
2. 接着,将这个密钥分成左右两半,C0 和 D0,每一半 28 位。定义了 C0 和 D0 之后,创建 16 个 Cn 和 Dn 块,其中 1<=n<=16。每一对 Cn 和 Dn 块都通过使用标识“左移位”的表分别从前一对 Cn-1 和 Dn-1 形成,n = 1, 2, ..., 16,而“左移位”表说明了要对哪一位进行操作。在所有情况下,单一左移位表示这些位轮流向左移动一个位置。在一次左移位之后,28 个位置中的这些位分别是以前的第 2、3……28 位。
通过将另一个置换表应用于每一个 CnDn 连接对,从而形成密钥 Kn,1<=n<=16。每一对有 56 位,而置换表只使用其中的 48 位,因为每逢第 8 位都将被忽略。
3. 编码每个 64 位的数据块。
64 位的消息数据 M 有一个初始置换 IP。这将根据置换表重新排列这些位,置换表中的项按这些位的初始顺序描述了它们新的排列。我们以前见过这种线性表结构。
使用函数 f 来生成一个 32 位的块,函数 f 对两个块进行操作,一个是 32 位的数据块,一个是 48 位的密钥 Kn,连续迭代 16 次,其中 1<=n<=16。用 + 表示 XOR 加法(逐位相加,模除 2)。然后,n 从 1 到 16,计算 Ln = Rn-1 Rn = Ln-1 + f(Rn-1,Kn)。即在每次迭代中,我们用前一结果的右边 32 位,并使它们成为当前步骤中的左边 32 位。对于当前步骤中的右边 32 位,我们用算法 f XOR 前一步骤中的左边 32 位。
要计算 f,首先将每一块 Rn-1 从 32 位扩展到 48 位。可以使用选择表来重复 Rn-1 中的一些位来完成这一操作。这个选择表的使用就成了函数 f。因此 f(Rn-1) 的输入块是 32 位,输出块是 48 位。f 的输出是 48 位,写成 8 块,每块 6 位,这是通过根据已知表按顺序选择输入中的位来实现的。
我们已经使用选择表将 Rn-1 从 32 位扩展成 48 位,并将结果 XOR 密钥 Kn。现在有 48 位,或者是 8 组,每组 6 位。每组中的 6 位现在将经历一次变换,该变换是算法的核心部分:在叫做“S 盒”的表中,我们将这些位当作地址使用。每组 6 位在不同的 S 盒中表示不同的地址。该地址中是一个 4 位数字,它将替换原来的 6 位。最终结果是 8 组,每组 6 位变换成 8 组,每组 4 位(S 盒的 4 位输出),总共 32 位。
f 计算的最后阶段是对 S 盒输出执行置换 P,以得到 f 的最终值。f 的形式是 f = P(S1(B1)S2(B2)...S8(B8))。置换 P 根据 32 位输入,在以上的过程中通过置换输入块中的位,生成 32 位输出。
解密只是加密的逆过程,使用以上相同的步骤,但要逆转应用子密钥的顺序。DES 算法是可逆的
(2) 算法的安全性分析
在知道一些明文和密文分组的条件下,从理论上讲很容易知道对DES进行一次穷举攻击的复杂程度:密钥的长度是56位,所以会有 种的可能的密钥。
在1993年的一年一度的世界密码大会上,加拿大北方电信公司贝尔实验室的 Michael Wiener 描述了如何构造一台专用的机器破译DES,该机器利用一种每秒能搜索5000万个密钥的专用芯片。而且此机器的扩展性很好,投入的经费越多则效率越高。用100万美元构造的机器平均3.5小时就可以破译密码。
如果不用专用的机器,破译DES也有其他的方法。在1994年的世界密码大会上,M.Matsui 提出一种攻克DES的新方法--"线性密码分析"法。它可使用平均 个明文及其密文,在12台HP9000/735工作站上用此方法的软件实现,花费50天时间完成对DES的攻击。
如前所述DES作为加密算法的标准已经二十多年了,可以说是一个很老的算法,而在新的加密算法的国际标准出现之前,许多DES的加固性改进算法仍有实用价值,在本文的3.4节详细的描述,同时考虑的以上所述DES的安全性已受到了威胁。
(4) 算法的变体 三重DES(TDEA),使用3个密钥,执行3次DES算法:
加密:C = Ek3[Dk2[Ek1[P]]] 解密:P = Dk1[Ek2[Dk3[C]]]
特点:安全性得到增强,但是速度变慢。
2.AES
自 20 世纪 70 年代以来一直广泛使用的“数据加密标准”(DES) 日益显出衰老的痕迹,而一种新的算法 -- Rijndael -- 正顺利地逐渐变成新标准。这里,Larry Loeb 详细说明了每一种算法,并提供了关于为什么会发生这种变化的内幕信息。
DES 算法是全世界最广泛使用的加密算法。最近,就在 2000 年 10 月,它在其初期就取得的硬件方面的优势已经阻碍了其发展,作为政府加密技术的基础,它已由“高级加密标准”(AES) 中包含的另一种加密算法代替了。AES 是指定的标准密码系统,未来将由政府和银行业用户使用。AES 用来实际编码数据的加密算法与以前的 DES 标准不同。我们将讨论这是如何发生的,以及 AES 中的 Rijndael 算法是如何取代 DES 的算法的。
“高级加密标准”成就
但直到 1997 年,美国国家标准技术局 (NIST) 才开始打着 AES 项目的旗帜征集其接任者。1997 年 4 月的一个 AES 研讨会宣布了以下 AES 成就的最初目标:
• 可供政府和商业使用的功能强大的加密算法
• 支持标准密码本方式
• 要明显比 DES 3 有效
• 密钥大小可变,这样就可在必要时增加安全性
• 以公正和公开的方式进行选择
• 可以公开定义
• 可以公开评估
AES 的草案中最低可接受要求和评估标准是:
A.1 AES 应该可以公开定义。
A.2 AES 应该是对称的块密码。
A.3 AES 应该设计成密钥长度可以根据需要增加。
A.4 AES 应该可以在硬件和软件中实现。
A.5 AES 应该 a) 可免费获得。
A.6 将根据以下要素评价符合上述要求的算法:
1. 安全性(密码分析所需的努力)
2. 计算效率
3. 内存需求
4. 硬件和软件可适用性
5. 简易性
6. 灵活性
7. 许可证需求(见上面的 A5)
Rijndael:AES 算法获胜者
1998年8月20日NIST召开了第一次AES侯选会议,并公布了15个AES侯选算法。经过一年的考察,MARS,RC6,Rijndael,Serpent,Twofish共5种算法通过了第二轮的选拔。2000 年 10 月,NIST 选择 Rijndael(发音为 "Rhine dale")作为 AES 算法。它目前还不会代替 DES 3 成为政府日常加密的方法,因为它还须通过测试过程,“使用者”将在该测试过程后发表他们的看法。但相信它可以顺利过关。
Rijndael 是带有可变块长和可变密钥长度的迭代块密码。块长和密钥长度可以分别指定成 128、192 或 256 位。
Rijndael 中的某些操作是在字节级上定义的,字节表示有限字段 GF(28) 中的元素,一个字节中有 8 位。其它操作都根据 4 字节字定义。
加法照例对应于字节级的简单逐位 EXOR。
在多项式表示中,GF(28) 的乘法对应于多项式乘法模除阶数为 8 的不可约分二进制多项式。(如果一个多项式除了 1 和它本身之外没有其它约数,则称它为不可约分的。)对于 Rijndael,这个多项式叫做 m(x),其中:m(x) = (x8 + x4 + x3 + x + 1) 或者十六进制表示为 '11B'。其结果是一个阶数低于 8 的二进制多项式。不像加法,它没有字节级的简单操作。
不使用 Feistel 结构!
在大多数加密算法中,轮回变换都使用着名的 Feistel 结构。在这个结构中,中间 State 的位部分通常不做更改调换到另一个位置。(这种线性结构的示例是我们在 DES 部分中讨论的那些表,即使用固定表的形式交换位。)Rijndael 的轮回变换不使用这个古老的 Feistel 结构。轮回变换由三个不同的可逆一致变换组成,叫做层。(“一致”在这里表示以类似方法处理 State 中的位。)
线性混合层保证了在多个轮回后的高度扩散。非线性层使用 S 盒的并行应用,该应用程序有期望的(因此是最佳的)最差非线性特性。S 盒是非线性的。依我看来,这就 DES 和 Rijndael 之间的密钥概念差异。密钥加法层是对中间 State 的轮回密钥 (Round Key) 的简单 EXOR,如以下所注。
Rijndael算法
加密算法
Rijndael算法是一个由可变数据块长和可变密钥长的迭代分组加密算法,数据块长和密钥长可分别为128,192或256比特。
数据块要经过多次数据变换操作,每一次变换操作产生一个中间结果,这个中间结果叫做状态。状态可表示为二维字节数组,它有4行,Nb列,且Nb等于数据块长除32。如表2-3所示。
a0,0 a0,1 a0,2 a0,3 a0,4 a0,5
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5
a3,0 a3,1 a3,2 a3,3 a3,4 a3,5
数据块按a0,0 , a1,0 , a2,0 , a3,0 , a0,1 , a1,1 , a2,1 , a3,1 , a0,2…的顺序映射为状态中的字节。在加密操作结束时,密文按同样的顺序从状态中抽取。
密钥也可类似地表示为二维字节数组,它有4行,Nk列,且Nk等于密钥块长除32。算法变换的圈数Nr由Nb和Nk共同决定,具体值列在表2-4中。
表3-2 Nb和Nk决定的Nr的值
Nr Nb = 4 Nb = 6 Nb = 8
Nk = 4 10 12 14
Nk = 6 12 12 14
Nk = 8 14 14 14
3.2.1圈变换
加密算法的圈变换由4个不同的变换组成,定义成:
Round(State,RoundKey)
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddRoundKey(State,RoundKey); (EXORing a Round Key to the State)
}
加密算法的最后一圈变换与上面的略有不同,定义如下:
FinalRound(State,RoundKey)
{
ByteSub(State);
ShiftRow(State);
AddRoundKey(State,RoundKey);
}
ByteSub变换
ByteSub变换是作用在状态中每个字节上的一种非线形字节变换。这个S盒子是可逆的且由以下两部分组成:
把字节的值用它的乘法逆替代,其中‘00’的逆就是它自己。
经(1)处理后的字节值进行如下定义的仿射变换:
y0 1 1 1 1 1 0 0 0 x0 0
y1 0 1 1 1 1 1 0 0 x1 1
y2 0 0 1 1 1 1 1 0 x2 1
y3 0 0 0 1 1 1 1 1 x3 0
y4 = 1 0 0 0 1 1 1 1 x4 + 0
y5 1 1 0 0 0 1 1 1 x5 0
y6 1 1 1 0 0 0 1 1 x6 1
y7 1 1 1 1 0 0 0 1 x7 1
ShiftRow变换
在ShiftRow变换中,状态的后3行以不同的移位值循环右移,行1移C1字节,行2移C2字节,行3移C3字节。
移位值C1,C2和C3与加密块长Nb有关,具体列在表2-5中:
表3-3 不同块长的移位值
Nb C1 C2 C3
4 1 2 3
MixColumn变换
在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式与一固定多项式c(x)相乘然后模多项式x4+1,其中c(x)为:
c(x) =‘03’x3 + ‘01’x2 + ‘01’x + ‘02’
圈密钥加法
在这个操作中,圈密钥被简单地使用异或操作按位应用到状态中。圈密钥通过密钥编制得到,圈密钥长等于数据块长Nb。
在这个表示法中,“函数”(Round, ByteSub, ShiftRow,...) 对那些被提供指针 (State, RoundKey) 的数组进行操作。ByteSub 变换是非线性字节交换,各自作用于每个 State 字节上。在 ShiftRow 中,State 的行按不同的偏移量循环移位。在 MixColumn 中,将 State 的列视为 GF(28) 多项式,然后乘以固定多项式 c( x ) 并模除 x4 + 1,其中 c( x ) = '03' x3 + '01' x2+ '01' x + '02'。这个多项式与 x4 + 1 互质,因此是可逆的。
轮回密钥通过密钥计划方式从密码密钥 (Cipher Key) 派生而出。它有两个组件:密钥扩展 (Key Expansion) 和轮回密钥选择 (Round Key Selection)。轮回密钥的总位数等于块长度乘以轮回次数加 1(例如,块长度等于 128 位,10 次轮回,那么就需要 1408 个轮回密钥位)。
密码密钥扩充成扩展密钥 (Expanded Key)。轮回密钥是通过以下方法从这个扩展密钥中派生的:第一个轮回密钥由前 Nb(Nb = 块长度)个字组成,第二个由接着的 Nb 个字组成,以此类推。
加密算法由以下部分组成:初始轮回密钥加法、Nr-1 个轮回和最后一个轮回。在伪 C 代码中:
Rijndael(State,CipherKey)
{
KeyExpansion(CipherKey,ExpandedKey);
AddRoundKey(State,ExpandedKey);
For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey + Nb*i);
FinalRound(State,ExpandedKey + Nb*Nr).
}
如果已经预先执行了密钥扩展,则可以根据扩展密钥指定加密算法。
Rijndael(State,ExpandedKey)
{
AddRoundKey(State,ExpandedKey);
For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey + Nb*i);
FinalRound(State,ExpandedKey + Nb*Nr);
}
由于 Rijndael 是可逆的,解密过程只是颠倒上述的步骤。
最后,开发者将仔细考虑如何集成这种安全性进展,使之成为继 Rijndael 之后又一个得到广泛使用的加密算法。AES 将很快应一般商业团体的要求取代 DES 成为标准,而该领域的发展进步无疑将追随其后。
3.IDEA加密算法 (1) 算法简介 IDEA算法是International Data Encryption Algorithmic 的缩写,意为国际数据加密算法。是由中国学者朱学嘉博士和着名密码学家James Massey 于1990年联合提出的,当时被叫作PES(Proposed Encryption Standard)算法,后为了加强抵抗差分密码分,经修改于1992年最后完成,并命名为IDEA算法。 (2) 算法描述 这个部分参见论文上的图 (3) 算法的安全性分析 安全性:IDEA的密钥长度是128位,比DES长了2倍多。所以如果用穷举强行攻击的话, 么,为了获得密钥需要 次搜索,如果可以设计一种每秒能搜索十亿把密钥的芯片,并且 采用十亿个芯片来并行处理的话,也要用上 年。而对于其他攻击方式来说,由于此算法 比较的新,在设计时已经考虑到了如差分攻击等密码分析的威胁,所以还未有关于有谁 发现了能比较成功的攻击IDEA方法的结果。从这点来看,IDEA还是很安全的。
4.总结
几种算法的性能对比
算法 密钥长度 分组长度 循环次数
DES 56 64 16
三重DES 112、168 64 48
AES 128、192、256 128 10、12、14
IDEA 128 64 8
速度:在200MHz的奔腾机上的对比。
C++ DJGP(++pgcc101)
AES 30.2Mbps 68.275Mbps
DES(RSAREF) 10.6Mbps 16.7Mbps
3DES 4.4Mbps 7.3Mbps
Celeron 1GHz的机器上AES的速度,加密内存中的数据
128bits密钥:
C/C++ (Mbps) 汇编(Mbps)
Linux 2.4.7 93 170
Windows2K 107 154
256bits密钥:
C/C++ (Mbps) 汇编(Mbps)
Linux 2.4.7 76 148
Windows2K 92 135
安全性
1990年以来,特制的"DES Cracker"的机器可在几个小时内找出一个DES密钥。换句话说,通过测试所有可能的密钥值,此硬件可以确定用于加密信息的是哪个密钥。假设一台一秒内可找出DES密钥的机器(如,每秒试255个密钥),如果用它来找出128-bit AES的密钥,大约需要149万亿年。
四、对称加密应用 在保密通信中的应用。(保密电话) 附加内容
安全哈希算法(SHA)
由NIST开发出来的。
此算法以最大长度不超过264位的消息为输入,生成160位的消息摘要输出。主要步骤:
1. 附加填充位
2. 附加长度
3. 初始化MD缓冲区,为160位的数据
A=67452301
B=EFCDAB89
C=89BADCFE
D=10325476
E=C3D2E1F0
4. 处理512位消息块,将缓冲虚数据和消息块共同计算出下一个输出
5. 输出160位摘要
此外还有其他哈希算法,如MD5(128位摘要),RIPEMD-160(160位摘要)等。
‘柒’ 某人接货一段换位加密的密文,已知密钥字符串为“dragon”请解出明文,并写出详细破译过程
明文:
过程:
密文是
密钥dragon 排序后是adgnor
所以密文为 a...a d....d g...g n...n o...o r...r
可见a = EOITUTRIA
d = SEUSMNKSL
g = NPVYTWOOA
n = HNRORREAA
o = ZEECEOFNA
r = HNNIPEPSA
调整次序,得:
d = SEUSMNKSL
r = HNNIPEPSA
a = EOITUTRIA
g = NPVYTWOOA
o = ZEECEOFNA
n = HNRORREAA
明文排列次序为 dragon... dragon: (第i个dragon由上面的数组各取第i个元素组成)
所以得明文:
‘捌’ 换位密码的加密方法
加密换位密码通过密钥只需要对明文进行加密,并且重新排列里面的字母位置即可。具体方法如下
1、基于二维数组移位的加密算法
给定一个二维数组的列数,即该二维数组每行可以保存的字符个数。再将明文字符串按行依次排列到该二维数组中。最后按列读出该二维数组中的字符,这样便可得到密文。
2、换位解密算法(基于二维数组移位的解密算法)
先给定一个二维数组的列数,即该二维数组每行可以保存的字符个数,并且这个数应该和加密算法中的一致。接下来将密文字符串按列一次性排列到该二维数组中。最后按行读出该二维数组中的字符即可。
3、换位加密算法
首先按照密钥排列顺序:将想要加密的明文加密,然后列出表格,找出对应的字母,就是密钥。然后对他们进行换位加密,就是将表格的第二行依据密钥排列顺序进行排序以便得到加密后的密文。
(8)圆柱换位加密算法扩展阅读
数据加密技术的分类
1、专用密钥
又称为对称密钥或单密钥,加密和解密时使用同一个密钥,即同一个算法。单密钥是最简单方式,通信双方必须交换彼此密钥,当需给对方发信息时,用自己的加密密钥进行加密,而在接收方收到数据后,用对方所给的密钥进行解密。当一个文本要加密传送时,该文本用密钥加密构成密文,密文在信道上传送,收到密文后用同一个密钥将密文解出来,形成普通文体供阅读。
2、对称密钥
对称密钥是最古老的,一般说“密电码”采用的就是对称密钥。由于对称密钥运算量小、速度快、安全强度高,因而如今仍广泛被采用。它将数据分成长度为64位的数据块,其中8位用作奇偶校验,剩余的56位作为密码的长度。首先将原文进行置换,得到64位的杂乱无章的数据组,然后将其分成均等两段;第三步用加密函数进行变换,并在给定的密钥参数条件下,进行多次迭代而得到加密密文。
3、公开密钥
又称非对称密钥,加密和解密时使用不同的密钥,即不同的算法,虽然两者之间存在一定的关系,但不可能轻易地从一个推导出另一个。非对称密钥由于两个密钥(加密密钥和解密密钥)各不相同,因而可以将一个密钥公开,而将另一个密钥保密,同样可以起到加密的作用。公开密钥的加密机制虽提供了良好的保密性,但难以鉴别发送者,即任何得到公开密钥的人都可以生成和发送报文。
4、非对称加密技术
数字签名一般采用非对称加密技术(如RSA),通过对整个明文进行某种变换,得到一个值,作为核实签名。接收者使用发送者的公开密钥对签名进行解密运算,如其结果为明文,则签名有效,证明对方的身份是真实的。数字签名不同于手写签字,数字签名随文本的变化而变化,手写签字反映某个人个性特征,是不变的;数字签名与文本信息是不可分割的,而手写签字是附加在文本之后的,与文本信息是分离的。
‘玖’ 换位加密法的基本定义
换位加密算法是一种较为简单的加密算法,由明文、密钥得出最后的密文,就是通过密钥对明文进行加密,换个位置。
‘拾’ 古典加密技术中最基本的两种算法是什么
替代算法和置换移位法。
1.替代算法
替代算法指的是明文的字母由其他字母或数字或符号所代替。最着名的替代算法是恺撒密码。凯撒密码的原理很简单,其实就是单字母替换。我们看一个简单的例子:
明文:abcdefghijklmnopq
密文:defghijklmnopqrst
若明文为student,对应的密文则为vwxghqw 。在这个一一对应的算法中,恺撒密码将字母表用了一种顺序替代的方法来进行加密,此时密钥为3,即每个字母顺序推后3个。由于英文字母为26个,因此恺撒密码仅有26个可能的密钥,非常不安全。
为了加强安全性,人们想出了更进一步的方法:替代时不是有规律的,而是随机生成一个对照表。
明文:abcdefghijklmnopqrstuvwxyz
密文:xnyahpogzqwbtsflrcvmuekjdI
此时,若明文为student,对应的密文则为 vmuahsm 。这种情况下,解密函数是上面这个替代对照表的一个逆置换。
不过,有更好的加密手段,就会有更好的解密手段。而且无论怎样的改变字母表中的字母顺序,密码都有可能被人破解。由于英文单词中各字母出现的频度是不一样的,通过对字母频度的统计就可以很容易的对替换密码进行破译。为了抗击字母频度分析,随后产生了以置换移位法为主要加密手段的加密方法。
2.置换移位法
使用置换移位法的最着名的一种密码称为维吉尼亚密码。它以置换移位为基础的周期替换密码。
前面介绍的替代算法中,针对所有的明文字母,密钥要么是一个唯一的数,要么则是完全无规律可寻的。在维吉尼亚密码中,加密密钥是一个可被任意指定的字符串。加密密钥字符依次逐个作用于明文信息字符。明文信息长度往往会大于密钥字符串长度,而明文的每一个字符都需要有一个对应的密钥字符,因此密钥就需要不断循环,直至明文每一个字符都对应一个密钥字符。对密钥字符,我们规定密钥字母a,b,c,d……y,z对应的数字n为:0,1,2,3……24,25。每个明文字符首先找到对应的密钥字符,然后根据英文字母表按照密钥字符对应的数字n向后顺序推后n个字母,即可得到明文字符对应的密文字符。
如果密钥字为deceptive , 明文为 wearediscoveredsaveyourself,则加密的过程为:
明文: wearediscoveredsaveyourself
密钥: deceptivedeceptivedeceptive
密文: zicvtwqngrzgvtwavzhcqyglmgj
对明文中的第一个字符w,对应的密钥字符为d,它对应需要向后推3个字母,w,x,y,z,因此其对应的密文字符为z。上面的加密过程中,可以清晰的看到,密钥deceptive被重复使用。
古典密码体制将数学的方法引入到密码分析和研究中。这为现代加密技术的形成和发展奠定了坚实的基础。