- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章数据内容的保护 -加密与解密.ppt
第二章 数据内容的保护-加密与解密 恺撒密码 思想: 它将字母表中的字母移动移动一定位置而实现加密,如果解密,则只要将字母向相反的方向移动同样位数即可。 例如: 明文:abcde 密文:cdefg 密钥为:2 步骤: (1)读取要加密的字符串、密钥 (2)取出字符串中的每个字符 (3)对每个字符进行移动 例:Caesar JAVA安全开发包 提供了常用的加密方法,我们不需要了解算法的细节就可以直接使用开发包提供的函数来进行加密和解密运算。 提供了常用的散列函数的计算。 提供了数字证书的签发和认证函数。 对称密钥的生成以及对象序列化方式保存 编程思路: (1)获取密钥生成器:指定加密算法名称 (2)初始化密钥生成器:指定密钥长度 (3)生成密钥 (4)通过对象序列化方式将密钥保存在文件中 例:Skey_DES 以字节保存对称密钥 上例是将密钥以对象的方式在文件中保存,本例是将密钥以字节的方式在文件中保存 编程思路: (1)获取密钥 (2)获取主要编码格式 (3)保存密钥编码格式 例:Skey_kb 使用对称密钥加密 编程思路: (1)从文件中获取密钥 (2)创建密码器:指定加密算法 (3)初始化密码器:决定加密还是解密,以及加解密密钥。 (4)获取等待加密的密文 (5)执行加密 (6)处理加密结果 例:java SEnc 使用对称密钥解密 编程思路: (1)从文件中获取密钥 (2)创建密码器:指定解密算法 (3)初始化密码器:决定加密还是解密,以及加解密密钥。 (4)获取等待解密的明文 (5)执行解密 (6)处理解密结果 例:java SDec 基于口令的加密 上例中,密钥被保存在文件中,需要时读取文件,其缺点是容易被窃取,携带也不方便,另一种方法是将其打印出来,需要时对照打印出的内容一个一个输入,但由于密钥很长输入很麻烦。 在实际中,更常见的是基于口令的加密,加密时输入口令,口令可以由使用者自己确定一个容易记忆的,解密时只有输入同样的口令才能得到明文,为了增加破解的难度,还需要有一个随机数(称为盐)和口令组合来加密文件。 编程思路: (1)读取口令 (2)由口令生成密钥 (3)生成随机数(盐) (4)创建并初始化密码器 (5)获取明文,执行加密 例:加密:java PBEEnc abcde 基于口令的解密 编程思路: (1)读取口令并生成密钥 (2)获得随机数(盐) (3)获取加密结果 (4)创建并初始化密码器,执行解密 例:解密:java PBEDec abcde 针对流的加密和解密 在前面的例子中加解密都是针对字节数组进行的,但实际编程中更针对流进行加密和解密,如对整个文件进行加解密或对网络通信进行加解密等。尽管我们可以先从流中读出字节然后进行加解密,但使用JAVA中针对流提供的专门的类更加方便。 针对输入流的加密和解密 当使用CipherInputStream类的read()方法从流中读取数据时,会自动将标准输入流中的内容使用密码器进行加密或解密再读出。 编程思路: (1)生成密钥 (2)创建并初始化密码器 (3)创建要加密或解密的输入流 (4)创建CipherInputStream对象 (5)读取输入流 例:加密:java StreamIn StreamIn1.txt 解密:java StreamIn SEnc.dat 针对输出流的加密和解密 当使用CipherOutputStream类中的write()方法进行输出时,会自动将write()方法参数中的内容使用密码器进行加密或解密后再写入标准输出流。 编程思路: (1)生成密钥 (2)创建并初始化密码器 (3)创建要加密或解密的内容 (4)获取加密或解密的输出以及CipherOouputStream对象 (5)写输出流 例:加密 :java StreamOut enc StreamIn1.txt mytest.txt 解密:java StreamOut dec mytest.txt mytest2.txt 加密方式的设定 在SEnc.java中若加密的字符串是: “Hello123 Hello123 Hello123 Hello123”即每8个字符相同时,密文也会出现相同的情况。 可以使用CBC加密方式来避免这种情况。 使用CBC方式的加密 前面的加密方式是对明文的每个分组独立进行同一密钥的加密。 CBC加密方式是先加密第一个分组,然后使用得到的密文加密第二个分组,使用第二个分组的密文加密第三个分组,以此类推,这样,即使两个分组相同,得到的密文也不同。 为了防止使用同一密钥,密文的开头8个字节相同的情况,CBC使用一个8个字节的随机数(称为初始向量)来加密第一个分组,其作用类似于基于口令加密
您可能关注的文档
最近下载
- 苏教版五年级下册数学计算题每日一练带答案(共30天).docx VIP
- 学校多媒体教室维护方案.docx VIP
- 人教版高中英语选择性必修一 UNIT 3 Period 3.ppt VIP
- PMCF-plan完整可编辑版.docx VIP
- 热力学统计物理课件【共317张PPT】.ppt VIP
- 公路工程地基处理手册_0062-0122.pdf VIP
- 部编人教版三年级上册语文全册说课稿.doc VIP
- 地方国有资本投资运营企业内部控制研究-以L企业为例.pdf VIP
- 动力电池使用维护与拆解技术:动力电池拆解技术PPT教学课件.pptx VIP
- 苏教版五年级下册数学计算题每日一练带答案(共20天).docx VIP
文档评论(0)