欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    网络安全第九章密码学与信息加密.docx

    • 资源ID:13927366       资源大小:21.05KB        全文页数:16页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    网络安全第九章密码学与信息加密.docx

    1、网络安全第九章密码学与信息加密第九章 密码学与信息加密1. 密码学包含哪些概念?有什么功能?答:密码学(Cryptology)是研究信息系统安全保密的科学,密码编码学(Cryptography)主要研究对信息进行编码,实现对信息的隐藏。密码分析学(Cryptanalytics)主要研究加密消息的破译或消息的伪造。密码学主要包含以下几个概念:1)密码学的目标:保护数据的保密性、完整性和真实性。保密性就是对数据进行加密,使非法用户无法读懂数据信息,而合法用户可以应用密钥读取信息。完整性是对数据完整性的鉴别,以确定数据是否被非法纂改,保证合法用户得到正确、完整的信息。真实性是数据来源的真实性、数据本

    2、身真实性的鉴别,可以保证合法用户不被欺骗。2)消息的加密与解密:消息被称为明文,用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密。3)密码学的功能:提供除机密性外,密码学还提供鉴别、完整性和抗抵赖性等重要功能。这些功能是通过计算机进行社会交流至关重要的需求。鉴别:消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。完整性:消息的接收者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。抗抵赖性:发送消息者事后不可能虚假地否认他发送的消息。4)密码算法和密钥:密码算法也叫密码函数,是用于加密和解密的数学函数。通常

    3、情况下,有两个相关的函数:一个用做加密,另一个用做解密。密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的数据。基于密钥的算法通常有两类:对称算法和公开密钥算法。对称密钥加密,又称公钥加密,即信息的发送方和接收方用一个密钥去加密和解密数据。它的最大优势是加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。非对称密钥加密,又称私钥密钥加密。它需要使用一对密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。信息发送者用公开密钥去加密,而信息接收者则用私用密钥去解密。私钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。2. 简述对称

    4、加密算法的基本原理。答:对称算法有时又称为传统密码算法,加密密钥能够从解密密钥中推算出来,反过来也成立。在大多数对称算法中,加解密的密钥是相同的。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。对称算法要求发送者和接收者在安全通信之前,协商一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何

    5、人都能对消息进行加解密。对称算法的加密和解密表示为:EK(M)=CDK(C)=M3. 利用对称加密算法对“1234567”进行加密,并进行解密。#includeclass SubKeypublic:int key86;subkey16;class DESint encipher_decipher;int key_in88;int key_out87;int c0_d087;int c047,d047;int text88;int text_ip88;int A48,B48;int temp86;int temp186;int s_result84;int text_p84;int secret

    6、_ip88;public:void Key_Putting();void PC_1();int function(int,int);void SubKey_Production();void IP_Convert();void f();void _IP_Convert();void Out_secret();void DES:Key_Putting()cout请输入64位的密钥(8行8列且每行都得有奇数个1):n;for(int i=0;i8;i+)for(int j=0;jkey_inij;if(j!=7) key_outij=key_inij;4. 简述公开密钥算法的基本原理。答:公开密钥

    7、算法,加密密钥能够公开,即陌生者能用加密密钥加密信息,但只有用相应的解密密钥才能解密信息。如果发信方想发送只有收信方才能解读的加密信息,发信方必须首先知道收信方的公钥,然后利用收信方的公钥来加密原文;收信方收到加密密文后,使用自己的私钥才能解密密文。显然,采用不对称加密算法,收发信双方在通信之前,收信方必须将自己早已随机生成的公钥送给发信方,而自己保留私钥。公开密钥K1加密表示为:EK1(M)=C。公开密钥和私人密钥是不同的,用相应的私人密钥K2解密可表示为:DK2(C)=M。5. 利用公开密钥算法对“1234567”进行加密,并进行解密。package test; import java.i

    8、o.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.CipherInputStream; import javax.crypto.CipherOutputStream; import javax.crypto.Key

    9、Generator; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public class DESUtil Key key public DESUtil() public DESUtil(String str) setKey(str); / 生成密匙 public Key getKey() return key public void setKey(Key key) this . key = key; /* * 根据参数生成 KEY */ public void setKey(String strKey) try

    10、KeyGenerator _generator = KeyGenerator.getInstance ( DES ); _generator.init( new SecureRandom(strKey.getBytes(); this . key = _generator.generateKey(); _generator = null catch (Exception e) throw new RuntimeException( Error initializing SqlMap class. Cause: + e); /* * 加密 String 明文输入 String 密文输出 */ p

    11、ublic String encryptStr(String strMing) byte byteMi = null byte byteMing = null String strMi = BASE64Encoder base64en = new BASE64Encoder(); try byteMing = strMing.getBytes( UTF8 ); byteMi = this .encryptByte(byteMing); strMi = base64en.encode(byteMi); catch (Exception e) throw new RuntimeException(

    12、 Error initializing SqlMap class. Cause: + e); finally base64en = null byteMing = null byteMi = null return strMi; /* * 解密 以 String 密文输入 ,String 明文输出 * * param strMi * return */ public String decryptStr(String strMi) BASE64Decoder base64De = new BASE64Decoder(); byte byteMing = null byte byteMi = nu

    13、ll String strMing = try byteMi = base64De.decodeBuffer(strMi); byteMing = this .decryptByte(byteMi); strMing = new String(byteMing, UTF8 ); catch (Exception e) throw new RuntimeException( Error initializing SqlMap class. Cause: + e); finally base64De = null byteMing = null byteMi = null return strMi

    14、ng; /* * 加密以 byte 明文输入,byte 密文输出 * * param byteS * return */ private byte encryptByte( byte byteS) byte byteFina = null Cipher cipher; try cipher = Cipher.getInstance ( DES ); cipher.init(Cipher. ENCRYPT_MODE , key ); byteFina = cipher.doFinal(byteS); catch (Exception e) throw new RuntimeException(

    15、Error initializing SqlMap class. Cause: + e); finally cipher = null return byteFina; /* * 解密以 byte 密文输入 , 以 byte 明文输出 * * param byteD * return */ private byte decryptByte( byte byteD) Cipher cipher; byte byteFina = null try cipher = Cipher.getInstance ( DES ); cipher.init(Cipher. DECRYPT_MODE , key

    16、); byteFina = cipher.doFinal(byteD); catch (Exception e) throw new RuntimeException( Error initializing SqlMap class. Cause: + e); finally cipher = null return byteFina; /* * 文件 file 进行加密并保存目标文件 destFile 中* * param file * 要加密的文件 如 c:/test/srcFile.txt * param destFile * 加密后存放的文件名 如c:/ 加密后文件 .txt */ p

    17、ublic void encryptFile(String file, String destFile) throws Exception Cipher cipher = Cipher.getInstance ( DES ); / cipher.init(Cipher.ENCRYPT_MODE, getKey(); cipher.init(Cipher. ENCRYPT_MODE , this . key ); InputStream is = new FileInputStream(file); OutputStream out = new FileOutputStream(destFile

    18、); CipherInputStream cis = new CipherInputStream(is, cipher); byte buffer = new byte 1024; int r; while (r = cis.read(buffer) 0) out.write(buffer, 0, r); cis.close(); is.close(); out.close(); /* * 文件采用 DES 算法解密文件 * * param file * 已加密的文件 如 c:/ 加密后文件 .txt * * param destFile * 解密后存放的文件名 如 c:/ test/ 解密后

    19、文件 .txt */ public void decryptFile(String file, String dest) throws Exception Cipher cipher = Cipher.getInstance ( DES ); cipher.init(Cipher. DECRYPT_MODE , this . key ); InputStream is = new FileInputStream(file); OutputStream out = new FileOutputStream(dest); CipherOutputStream cos = new CipherOut

    20、putStream(out, cipher); byte buffer = new byte 1024; int r; while (r = is.read(buffer) = 0) cos.write(buffer, 0, r); cos.close(); out.close(); is.close(); public static void main(String args) throws Exception DESUtil des = new DESUtil( 1234567 ); / DES 加密文件/ des.encryptFile(G:/test.doc, G:/ 加密test.d

    21、oc); / DES 解密文件/ des.decryptFile(G:/ 加密 test.doc, G:/ 解密 test.doc); String str1 = 要加密的字符串test / DES 加密字符串 String str2 = des.encryptStr(str1); / DES 解密字符串 String deStr = des.decryptStr(str2); System. out .println( 加密前: + str1); System. out .println( 加密后: + str2); System. out .println( 解密后: + deStr);

    22、6. 比较对称加密算法和公开密钥算法,分析它们的异同。答:通过比较第2、4对称密钥和公开密钥两种算法的基本原理,我们不难看出二者有以下异同点:1)相同点:二者都采用密钥加密解密。2)不同点:对称密钥加密的加密密钥和解密密钥是同一个密钥,收信方想解读密文必须拥有发信方的密钥,密钥是非公开的。对称密钥得法具有算法公开、计算量小、加密速度快、加密效率高等特点,但是对称密钥算法安全性过于依赖密钥,导致密钥管理负担重、成本高,在分布式网络系统中使用较为困难。公开密钥算法有两个密钥,一个密钥值用来加密消息,另一个密钥值用来解密消息。这两个密钥值在同一个过程中生成,称为密钥对。用来加密消息的密钥称为公钥,用

    23、来解密消息的密钥称为私钥。用公钥加密的消息只能用与之对应的私钥来解密,私钥除了持有者外无人知道,而公钥却可通过非安全管道来发送或在目录中发布,这使得公开密钥算法可广泛应用于分布式系统中。非对称加密体系不要求通信双方事先传递密钥或有任何约定就能完成保密通信,并且密钥管理方便,可实现防止假冒和抵赖,因此,更适合网络通信中的保密通信要求。公开密钥算法比对称加密算法慢数千倍,但在保护通信安全方面,公开密钥算法却具有对称密码难以企及的优势。7. 恺撒密码的加密方法是把a变成D,b变成E,c换成F,依次类推,z换成C。这样明文和密文的字母就建立一一对应的关系。加密原理其实就是:对明文加上了一个偏移值29,

    24、即“a”对应的ASCII码位97,“D”对应的ASCII码为68,相减得到29。编写程序1:实现恺撒密码加密单词“julus”。#include #define N 5void jiami(char namea256) FILE *fp_jiami,*fp_file2;char c; fp_jiami=fopen(namea,rb); fp_file2=fopen(file2.txt,wb);while(EOF!=(fscanf(fp_jiami,%c,&c) if(c=A&c=a&c=A&c=a&c=a&c=A&c=a&c=A&c=a&c=A&c=Z)c=c+32; fprintf(fp_f

    25、ile3,%c,c); fclose(fp_file3);fclose(fp_jiemi);int main() char name256; int n; printf(输入你要操作的TXT文本:); gets(name); printf(n请选择需要进行的操作:n); printf( 1:加密 2:解密 n); printf(输入你的选择:); scanf(%d,&n); switch(n) case 1:jiami(name);printf(t加密成功!nn); break; case 2:jiemi(name);printf(t解密成功!nn); break;default:printf

    26、(输入操作不存在!);return 0;编写程序2:实现解密,将程序1得到的密文进行解密。8. 简述PGP加密技术的应用。答:PGP(Pretty Good Privacy)加密技术是一个基于RSA公钥加密体系的邮件加密软件,提出了公共钥匙或不对称文件的加密技术。PGP加密技术的创始人是美国的Phil Zimmermann。他创造性地把RSA公钥体系和传统加密体系结合起来,并且在数字签名和密钥认证管理机制上有巧妙的设计,因此PGP成为目前几乎最流行的公钥加密软件包。由于RSA算法计算量极大,在速度上不适合加密大量数据,所以PGP实际上用来加密的不是RSA本身,而是采用传统加密算法IDEA,ID

    27、EA加解密的速度比RSA快得多。PGP随机生成一个密钥,用IDEA算法对明文加密,然后用RSA算法对密钥加密。收件人同样是用RSA解出随机密钥,再用IEDA解出原文。这样的链式加密既有RSA算法的保密性和认证性(Authentication),又保持了IDEA算法速度快的优势。9. 使用PGP软件加密文件,并与其他人交换密钥。用鼠标右键单击要加密的文件,在快捷菜单中选择“PGP”中的“Encrypt”选项,系统自动出啊先对话框,让用户选择要使用的加密密钥,选中一个密钥,单击“OK”按钮,目标文件被加密后,会在当前目录下自动产生一个新的文件。10. 简述X.509 v3 证书的结构。答:X.50

    28、9 v3 证书主要结构如下:1)版本号 该域用于区分各连续版本的证书,像版本1、版本2 和版本3。版本号域同样允许包括将来可能的版本。2) 证书序列号 该域含有一个唯一于每一个证书的整数值,它是由认证机构产生的。3) 签名算法标识符 该域用来说明签发证书所使用的算法以及相关的参数。4) 签发者 该域用于标识生成和签发该证书的认证机构的唯一名。5)有效期(Not Before/After) 该域含有两个日期/时间值:“Not Valid Before”和“Not Valid After”;它们定义了该证书可以被看作有效的时间段,除非该证书被撤销。6)拥有者 该域标识本证书拥有者的唯一名(DN),也就是拥有与证书中公钥所对应私钥的主体。此域必须非空,除非在版本3 的扩展项中使用了其他的名字。7)拥有


    注意事项

    本文(网络安全第九章密码学与信息加密.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开