数据内容的保护-加密与解密

数据内容的保护-加密与解密

ID:46233219

大小:342.84 KB

页数:27页

时间:2019-11-21

数据内容的保护-加密与解密_第1页
数据内容的保护-加密与解密_第2页
数据内容的保护-加密与解密_第3页
数据内容的保护-加密与解密_第4页
数据内容的保护-加密与解密_第5页
资源描述:

《数据内容的保护-加密与解密》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第二章数据内容的保护 -加密与解密恺撒密码思想:它将字母表中的字母移动移动一定位置而实现加密,如果解密,则只要将字母向相反的方向移动同样位数即可。例如:明文:abcde密文:cdefg密钥为:2步骤:(1)读取要加密的字符串、密钥(2)取出字符串中的每个字符(3)对每个字符进行移动例:CaesarJAVA安全开发包提供了常用的加密方法,我们不需要了解算法的细节就可以直接使用开发包提供的函数来进行加密和解密运算。提供了常用的散列函数的计算。提供了数字证书的签发和认证函数。对称密钥的生成以及对象序列化方式保存编程思路:(1)获取密钥生成器:指定加密算法名称(

2、2)初始化密钥生成器:指定密钥长度(3)生成密钥(4)通过对象序列化方式将密钥保存在文件中例:Skey_DES以字节保存对称密钥上例是将密钥以对象的方式在文件中保存,本例是将密钥以字节的方式在文件中保存编程思路:(1)获取密钥(2)获取主要编码格式(3)保存密钥编码格式例:Skey_kb使用对称密钥加密编程思路:(1)从文件中获取密钥(2)创建密码器:指定加密算法(3)初始化密码器:决定加密还是解密,以及加解密密钥。(4)获取等待加密的密文(5)执行加密(6)处理加密结果例:javaSEnc使用对称密钥解密编程思路:(1)从文件中获取密钥(2)创建密码器

3、:指定解密算法(3)初始化密码器:决定加密还是解密,以及加解密密钥。(4)获取等待解密的明文(5)执行解密(6)处理解密结果例:javaSDec基于口令的加密上例中,密钥被保存在文件中,需要时读取文件,其缺点是容易被窃取,携带也不方便,另一种方法是将其打印出来,需要时对照打印出的内容一个一个输入,但由于密钥很长输入很麻烦。在实际中,更常见的是基于口令的加密,加密时输入口令,口令可以由使用者自己确定一个容易记忆的,解密时只有输入同样的口令才能得到明文,为了增加破解的难度,还需要有一个随机数(称为盐)和口令组合来加密文件。编程思路:(1)读取口令(2)由口令

4、生成密钥(3)生成随机数(盐)(4)创建并初始化密码器(5)获取明文,执行加密例:加密:javaPBEEncabcde基于口令的解密编程思路:(1)读取口令并生成密钥(2)获得随机数(盐)(3)获取加密结果(4)创建并初始化密码器,执行解密例:解密:javaPBEDecabcde针对流的加密和解密在前面的例子中加解密都是针对字节数组进行的,但实际编程中更针对流进行加密和解密,如对整个文件进行加解密或对网络通信进行加解密等。尽管我们可以先从流中读出字节然后进行加解密,但使用JAVA中针对流提供的专门的类更加方便。针对输入流的加密和解密当使用CipherIn

5、putStream类的read()方法从流中读取数据时,会自动将标准输入流中的内容使用密码器进行加密或解密再读出。编程思路:(1)生成密钥(2)创建并初始化密码器(3)创建要加密或解密的输入流(4)创建CipherInputStream对象(5)读取输入流例:加密:javaStreamInStreamIn1.txt解密:javaStreamInSEnc.dat针对输出流的加密和解密当使用CipherOutputStream类中的write()方法进行输出时,会自动将write()方法参数中的内容使用密码器进行加密或解密后再写入标准输出流。编程思路:(1)

6、生成密钥(2)创建并初始化密码器(3)创建要加密或解密的内容(4)获取加密或解密的输出以及CipherOouputStream对象(5)写输出流例:加密:javaStreamOutencStreamIn1.txtmytest.txt解密:javaStreamOutdecmytest.txtmytest2.txt加密方式的设定在SEnc.java中若加密的字符串是:“Hello123Hello123Hello123Hello123”即每8个字符相同时,密文也会出现相同的情况。可以使用CBC加密方式来避免这种情况。使用CBC方式的加密前面的加密方式是对明文的

7、每个分组独立进行同一密钥的加密。CBC加密方式是先加密第一个分组,然后使用得到的密文加密第二个分组,使用第二个分组的密文加密第三个分组,以此类推,这样,即使两个分组相同,得到的密文也不同。为了防止使用同一密钥,密文的开头8个字节相同的情况,CBC使用一个8个字节的随机数(称为初始向量)来加密第一个分组,其作用类似于基于口令加密的盐。例:javaSEncCBCCBC加密模式DESDESDESk,IVmmmH(m)使用CBC方式的IE解密同加密一样,先要获取加密时用的初始向量,进而读取密文和密钥,最后在获取密码器对象时通过getInstance()方法的参数

8、设定加密方式,在密码器初始化时传入初始化向量。例:解密:javaSDecCBC生

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。