# 密码的加密
# 一、绪论
本章是全篇的绪论部分,首先描述了 DES 算法的整体研究背景并论述了加密技术的重大意义;其次在阅览大量中英文文献后针对当前国内外对于 DES 应用的研究现状做了综述;最后概括性地总结了本文的主要研究工作以及全篇的结构安排。
# 二、研究背景及意义
随着信息与通信技术的迅猛发展和广泛应用,网络与信息系统基础性、全局性的作用日益增强, 人们通过互联网进行信息交流,难免涉及到密码保护问题,这不仅关系到个人隐私甚至可能是国家机密,国家安全。隐私与机密网络信息的安全与保护问题日益成为亟待解决的关键问题。从这个意义上来说,提出一种对密码的有效加密算法,就是我们必须面对的问题,但是密码的复杂性和无序性给加密算法的设计带来难题,于是,我们必须寻找一种对简单密码普遍适用的规律性算法,那么,对对称密码的加密就成为最实用最普遍的问题。随着中国经济,社会的发展与崛起,生活的便捷性与快捷性越来越深入人心,网上购物,网上交易会越来越频繁,藉此,密码安全就成为我们最关注的问题。对密码的保护就成为我们的共识与需求,而加密最能体现出它的分量,那对对称
密码的加密同样就有深远的研究价值与现实意义。
不仅国内,国外对数据加密同样重视,1977 年,美国数据加密标准(Data Encryption Standard, DES)颁布,在此后的 30 年,DES 成为世界范围内的标准,,相关算法的不断改进,和新方法,新思路的不断涌现,这些,对对称密码加密算法的深入研究都起到很大的作用。
# 三、国内外相关研究现状及发展趋势
国外目前不仅在密码基础理论方面的研究做的很好,而且在实际应用方面也做的非常好。制定了一系列特别规范的密码标准。尽管算法的征集和讨论都已经公开化,但密码技术作为一种关键技术,各国都不会放弃自主权和控制权,争夺霸权地位。
目前国际上对非数学的密码理论与技术非常关注,讨论也非常活跃。信息隐藏将在未来网络中保护信息免于破坏起到重要作用,信息隐藏是网络环境下把机密信息隐藏在大量信息中不让对方发觉的一种方法。特别是图象叠加、数字水印、潜信道、隐匿协议等的理论与技术的研究已经引起人们的重视。1996 年以来,国际上召开了多次有关信息隐藏的专业研讨会。基于生物特征的识别理论与技术已有所发展,形成了一些理论和技术,也形成了一些产品。
# 四、全文内容安排
本文由六个章节构成,全文安排如下:
第一章,绪论。主要通过一些数据,强调研究背景及意义的重要性, 介绍国内外的关键技术研究现状。在互联网时代,加密算法对于维护国家安全、维护社会和平发展有着举足轻重的作用。
第二章,DES 算法原理。首先是对本文所使用的 DES 技术进行介绍,然后介绍了本文中所涉及的工作原理和 3DES 算法。
第三章,基于 3DES 的图片加密程序具体实现。首先介绍了图片数据的处理及分组实现,然后针对组内加密和 CBC 分组运行模式,详细地举例并阐释了程序的运行原理,最后通过密文图像显示和解密验证了方法的可行性,给出了最终的实验结果。
第四章,列出在程序编写过程中所遇到的问题并给出自己的解决思路。
第五章,实验数据,给出程序最终运行时所产生的加解密文件和运行效果图。
第六章,总结。对本文所做的研究工作做了概括总结。
第七章,给出整个程序的代码实现。
第八章,给出程序撰写中所引用的参考文献。
# 五、DES 算法原理
在第一章绪论中介绍了本文的研究背景、选题意义,了解到随着互联网的飞速发展,加密算法在扮演着越来越举足轻重的作用,故逐渐成为政府机构和研究学者们关注的热点问题,本章对 DES 算法的基本原理做深入探索和研究。
# 六、DES 简介
DES 全称叫(Data Encryption Standard), 是 1977 年美国联邦信息处理标准(FIPS)中所采用的一种对称加密算法。DES 之前一直使用很普遍,但是随着计算机的进步,现在 DES 已经可以被暴力破解了,除研究的原因外,我们不再建议使用 DES 算法。
# 七、DES 的加密解密
DES 的密钥长度是 64 比特,也就是 8 个字节。但是 DES 每隔 7 比特会设置一个错误校验位,所以真正的密钥长度是 56 比特。
因为 DES 的长度是 64 比特,每次只能将长度为 64 比特的原文进行加密,如果原文长于 64 比特的话,需要多次分组进行加密,这 64 比特的单位也叫做分组。
# 八、DES 工作原理
DES 由 Horst Feistel 设计,也称作 Feistel 网络。Feistel 网络,加密的各个步骤称为轮(round),整个加密过程就是进行若干轮的循环。
下图展示了 DES 中的一轮加密过程:
![](https://www.writebug.com/myres/static/uploads/2022/6/20/6c99ddeb73b04fd3fe0c63481d966891.writebug)
# 九、图 2-1 DES 加密过程
在每一轮的操作中,输入的数据被分成左右两部分,中间的子密钥指本轮加密所使用的密钥。在 Feistel 网络中,每一轮都使用不同的密钥,该密钥只是一个局部密钥,所以被称为子密钥。
其运算步骤如下:
将输入的数据分成左右两部分
将输入的右边直接发送到输出的右边
将输入的右边发送到轮函数 f
轮函数根据右侧数据和子密钥计算出一个随机数
将 4 得到的随机数和左侧数据进行 XOR 运算,将运算后的结果作为加密的左侧。
这一轮操作,只加密了左侧数据,右侧的没有加密,交换左右两侧的数据,再来一轮加密。这样右侧的数据也被加密。
# 十、DES 解密原理
XOR 的特性,即: A XOR B = C C XOR B = A
按照这样的特性,我们只需要将加密后的结果跟步骤 4 中计算出来的随机数再做一次 XOR 运算即可还原加密前的数据。
如下图所示:
![](https://www.writebug.com/myres/static/uploads/2022/6/20/6c99ddeb73b04fd3fe0c63481d966891.writebug)
# 十一、图 2-2 DES 解密过程
# 十二、三重 DES
三重 DES 是为了增加 DES 的强度,将 DES 重复 3 次所得到的一种密码算法,通常缩写为 3DES。
![](https://www.writebug.com/myres/static/uploads/2022/6/20/83cc899f3057b1c00132efc4ade241ba.writebug)
#
# 读入图片的二进制流
使用 rb 方式读入二进制 byte 流
```c++
file=open(cwd,'rb')
```
# 字符串转二进制 bit
该算法逐字读入 byte 将其转换为二进制形式 bit
通过类似 8 进制转 2 进制的方法将以字节为单位占据 8 位的字节流转换为以比特为单位的占据 1 位的 01 比特
```
__String_to_BitList(self, data):
"""Turn the string data, into a list of bits (1, 0)'s"""
if _pythonMajorVersion < 3:
# Turn the strings into integers. Python 3 uses a bytes
# class, which already has this behaviour.
data = [ord(c) for c in data]
l = len(data) * 8
result = [0] * l
pos = 0
for ch in data:
i = 7
while i >= 0:
if ch & (1 << i) != 0:
result[pos] = 1
else:
result[pos] = 0
pos += 1
i -= 1
```
# 十八、des 填充及分组
填充:
des 算法使用 64 位为单位的数据流,�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于 3DES 的图片加密程序具体实现。首先介绍了图片数据的处理及分组实现,然后针对组内加密和 CBC 分组运行模式,详细地举例并阐释了程序的运行原理,最后通过密文图像显示和解密验证了方法的可行性,给出了最终的实验结果。
资源推荐
资源详情
资源评论
收起资源包目录
100010963-基于Python 3DES 的图片加密程序具体实现.zip (8个子文件)
encryption
image.png 38KB
bin2img.py 4KB
lsz.py 16KB
LICENSE 1KB
使用说明.txt 128B
报告.docx 3.81MB
__pycache__
bin2img.cpython-38.pyc 4KB
README.md 28KB
共 8 条
- 1
资源评论
神仙别闹
- 粉丝: 2678
- 资源: 7667
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功