信息安全技术实验报告
信息安全技术应用实习报告

信息安全技术应用实习报告一、实习背景与目的随着互联网的普及和信息技术的发展,信息安全问题日益凸显,信息安全技术应用的重要性日益增大。
为了提高自己在信息安全领域的实际操作能力,我选择了信息安全技术应用实习项目。
本次实习旨在通过实际操作,了解和掌握信息安全技术应用的基本原理和方法,提高自己在信息安全领域的综合素质。
二、实习内容与过程1. 实习单位介绍本次实习单位是我国一家知名信息安全企业,主要从事信息安全技术研发、安全咨询和安全服务等工作。
实习期间,我主要负责协助工程师进行信息安全项目的实施和维护。
2. 实习内容(1)安全评估实习期间,我参与了多个安全评估项目,包括对企业的网络系统、应用系统和终端设备进行安全风险评估。
通过使用专业的评估工具,我发现并分析了企业存在的安全隐患,提出了针对性的安全改进措施。
(2)安全防护在安全防护方面,我参与了企业内部网络安全防护体系的搭建和维护工作。
通过配置防火墙、入侵检测系统和安全审计系统等安全设备,提高了企业内部网络的安全性。
(3)安全监控实习期间,我还参与了企业安全监控系统的搭建和运维工作。
通过实时监控企业网络和系统的运行状态,发现异常情况并及时处理,确保企业信息系统的安全稳定运行。
(4)应急响应在应急响应方面,我参与了企业信息安全应急响应团队的组建和训练工作。
通过模拟实战,提高了团队在面对信息安全事件时的快速反应和处理能力。
3. 实习过程在实习过程中,我认真学习了信息安全技术应用的相关知识,积极参与项目实践,不断提高自己的实际操作能力。
在工程师的指导下,我学会了使用各种安全工具和设备,掌握了信息安全项目实施的基本流程和方法。
三、实习收获与反思1. 实习收获通过本次实习,我深入了解了信息安全技术应用的基本原理和方法,提高了自己在信息安全领域的实际操作能力。
同时,我也学会了如何与企业同事有效沟通,提高了自己的团队协作能力。
2. 实习反思虽然我在实习过程中取得了一定的成绩,但同时也暴露出自己在信息安全领域的不足。
信息安全实验总结报告

信息安全实验总结报告信息安全实验总结报告篇一:信息安全实验报告课程名称:信息安全实验名称:共五次实验班级:姓名:同组人:指导教师评定:签名:实验一木马攻击与防范一、实验目的通过对木马的练习,使读者理解和掌握木马传播和运行的机制;通过手动删除木马,掌握检查木马和删除木马的技巧,学会防御木马的相关知识,加深对木马的安全防范意识。
二、实验原理木马的全称为特洛伊木马,源自古希腊神话。
木马是隐藏在正常程序中的具有特殊功能的恶意代码,是具备破坏、删除和修改文件、发送密码、记录键盘、实施DoS攻击甚至完全控制计算机等特殊功能的后门程序。
它隐藏在目标计算机里,可以随计算机自动启动并在某一端口监听来自控制端的控制信息。
1.木马的特性(1)伪装性 (2)隐藏性 (3)破坏性(4)窃密性2.木马的入侵途径木马入侵的主要途径是通过一定的欺骗方法,如更改图标、把木马文件与普通文件合并,欺骗被攻击者下载并执行做了手脚的木马程序,就会把木马安装到被攻击者的计算机中。
3.木马的种类(1)按照木马的发展历程,可以分为4个阶段:第1代木马是伪装型病毒,第2代木马是网络传播型木马,第3代木马在连接方式上有了改进,利用了端口反弹技术,例如灰鸽子木马,第4代木马在进程隐藏方面做了较大改动,让木马服务器端运行时没有进程,网络操作插入到系统进程或者应用进程中完成,例如广外男生木马。
(2)按照功能分类,木马又可以分为:破坏型木马,主要功能是破坏并删除文件;服务型木马; DoS攻击型木马;远程控制型木马三、实验环境两台运行Windows 2000/XP的计算机,通过网络连接。
使用“冰河”和“广外男生”木马作为练习工具。
四、实验内容和结果任务一“冰河”木马的使用1.使用“冰河”对远程计算机进行控制我们在一台目标主机上植入木马,在此主机上运行G_Server,作为服务器端;在另一台主机上运行G_Client,作为控制端。
打开控制端程序,单击快捷工具栏中的“添加主机”按钮,弹出如图1-5所示对对话框。
信息安全专业实验报告

一、实验背景随着信息技术的飞速发展,信息安全已经成为国家安全和社会稳定的重要组成部分。
为了提高学生对信息安全技术的理解和应用能力,我们开展了本次信息安全专业实验。
二、实验目的1. 理解并掌握信息安全的基本概念和原理。
2. 掌握常见信息安全攻击和防御技术。
3. 培养学生实际操作和问题解决能力。
三、实验内容本次实验共分为五个部分,分别为:1. 密码学实验2. 网络攻防实验3. 操作系统安全实验4. 应用安全实验5. 安全审计实验四、实验步骤及结果1. 密码学实验实验目的:掌握常用密码算法的原理和应用。
实验步骤:(1)实现对称加密算法(如DES、AES)和非对称加密算法(如RSA)的加解密过程。
(2)分析不同加密算法的优缺点。
实验结果:(1)成功实现了对称加密算法和非对称加密算法的加解密过程。
(2)掌握了不同加密算法的原理和应用。
2. 网络攻防实验实验目的:了解网络攻击方法,掌握网络安全防御技术。
实验步骤:(1)使用网络扫描工具(如Nmap)扫描目标主机。
(2)利用漏洞扫描工具(如Metasploit)对目标主机进行漏洞扫描。
(3)针对发现的漏洞,进行攻击和防御实验。
实验结果:(1)成功扫描到目标主机,并发现其存在的漏洞。
(2)掌握了常见的网络攻击方法。
(3)学习了针对漏洞的防御措施。
3. 操作系统安全实验实验目的:了解操作系统安全机制,掌握安全配置方法。
实验步骤:(1)分析Linux和Windows操作系统的安全机制。
(2)对操作系统进行安全配置,如设置用户权限、安装安全补丁等。
实验结果:(1)掌握了操作系统安全机制。
(2)学会了操作系统安全配置方法。
4. 应用安全实验实验目的:了解应用层安全机制,掌握安全配置方法。
实验步骤:(1)分析Web应用安全机制。
(2)对Web应用进行安全配置,如使用HTTPS、防止SQL注入等。
实验结果:(1)掌握了Web应用安全机制。
(2)学会了Web应用安全配置方法。
信息安全操作实验报告

信息安全操作实验报告实验名称:信息安全操作实验实验目的:1. 掌握信息安全操作的基本知识和技能。
2. 熟悉常用的信息安全操作工具和方法。
3. 培养对信息安全的意识和保护意识。
实验步骤:1. 实验前准备:了解信息安全的基本概念和原则,并掌握常见的信息安全威胁和攻击方式。
2. 实验环境:搭建一个模拟的网络环境,包括若干主机和服务器。
3. 实验内容:3.1. 使用端口扫描工具扫描实验环境中的主机和服务器的开放端口,并记录扫描结果。
3.2. 通过漏洞扫描工具对实验环境中的主机和服务器进行漏洞扫描,并记录扫描结果。
3.3. 使用弱口令攻击工具对实验环境中的主机和服务器进行弱口令攻击,测试其安全性。
3.4. 利用网络钓鱼工具进行网络钓鱼攻击,诱导用户输入敏感信息,并分析攻击效果。
3.5. 使用反弹Shell工具在实验环境中获取目标主机的控制权,并演示如何防范此类攻击。
实验结果:1. 根据扫描结果,分析开放端口的意义和可能的安全威胁,及时进行相应的安全设置和防护措施。
2. 根据漏洞扫描结果,及时修补系统和应用程序的漏洞,以提高信息系统的安全性。
3. 验证弱口令攻击的威胁,警醒用户要设置强密码,并做好密码管理和定期更改密码的习惯。
4. 通过网络钓鱼攻击的演示,提高用户的警觉意识,防范钓鱼等社交工程攻击。
5. 演示防范反弹Shell攻击的方法,包括防火墙设置、入侵检测系统的配置和使用,提高系统的安全性。
实验结论:通过本次实验,我深刻认识到了信息安全的重要性和必要性。
信息安全操作是保护个人隐私、企业重要信息及国家安全的重要手段。
在实际工作和生活中,我们要时刻保持对信息安全的警惕,并采取相应的安全操作措施。
不仅对个人而言,企业和政府也要高度重视信息安全,加强信息安全的培训和管理,确保信息系统的安全稳定运行。
在信息安全操作中,要掌握一些基本的安全工具和方法,如端口扫描、漏洞扫描、弱口令攻击和网络钓鱼攻击等。
了解这些攻击手段和防范方法,有助于提升自身的信息安全意识和能力。
信息安全技术实验分析报告

实验报告学院:信息学院专业:信息治理与信息系统专业班级:信息13-1姓名刘斌彬学号130814102实验组实验时刻2016年指导教师蓝海洋成绩实验项目名称Windows操作系统安全,Linux操作系统安全实验目的1.掌握windows账户与密码的设置方法2.掌握文件系统的爱护和加密方法3.掌握windows操作系统安全策略与安全模板的使用,审核和日志的启用方法4.掌握windows操作系统漏洞检测软件MBSA的使用方法,建立一个windows操作系统差不多安全框架5.通过实验掌握linux操作系统(以下简称linux)环境下的用户治理,进程治理以及文件治理的相关操作命令,掌握linux中的相关安全配置方法,建立起linux的差不多安全框架实验要求通过这次的实验学习,学生要学会windows操作系统和linux操作系统的差不多差不多安全配置。
实验原理一.Windows操作系统的安全原理1.账户和密码账户和密码是登录系统的基础,同时也是众多黑客程序攻击和窃取的对象。
因此,系统账户和密码的安全是极其重要的,必须通过配置来实现账户和密码的安全。
一般用户常常在安装系统后长期使用系统的默认设置,忽视了windows 系统默认设置的不安全性,而这些不安全性常常被攻击者利用,通过各种手段获得合法的账户,进一步破解密码,从而达到非法登录系统的目的。
因此,首先需要保障账户和密码的安全。
2.文件系统磁盘数据被攻击者或本地的其他用户破坏和窃取是经常困扰用户的问题,文件系统的安装问题也是特不重要的。
Windows系统提供的磁盘格式有FAT,FAT32以及NTFS。
其中,FAT,FAT32没有考虑安全到安全性方面的更高需求,例如无法设置用户访问权限等。
NTFA文件系统是Windows操作系统的一种安全的文件系统,治理员或者用户能够设置每个文件夹及每个文件的访问权限,从而限制一些用户和用户组的访问,以保障数据安全。
3.数据加密软件EFSEFS(encrypting file system,加密文件系统)是windows2000以上的版本操作系统所特有的一个有用功能,NTFS卷上的文件和数据,都能够直接被操作系统加密和保存,在专门大程度上提高了数据的安全性。
信息安全技术实验报告

信息安全技术实验报告一.实验目的本实验旨在探究信息安全技术在网络通信中的应用,了解加密算法和数字签名的基本原理,并通过实际操作掌握其具体实现过程。
二.实验内容1.对称加密算法实验-选择一种对称加密算法,如DES或AES,了解其基本原理和加密流程。
- 使用Python编写对称加密算法的实现程序。
-在实验过程中,通过设计不同的密钥长度和明文信息,观察加密结果的变化。
2.非对称加密算法实验-选择一种非对称加密算法,如RSA,了解公钥和私钥的生成方法。
- 使用Python编写非对称加密算法的实现程序。
-在实验中,生成一对密钥,并将公钥用于加密明文,私钥用于解密密文。
观察加密和解密过程是否正确。
3.数字签名实验-了解数字签名的基本原理和应用场景。
- 使用Python编写数字签名的实现程序。
-在实验中,生成一对密钥,并使用私钥对明文进行签名,再使用公钥验证签名的正确性。
三.实验步骤及结果1.对称加密算法实验-选择了AES加密算法,其基本原理是将明文分组并通过多轮加密运算得到密文。
- 编写了Python程序实现AES加密算法,并进行了调试。
-在不同的密钥长度和明文信息下,得到了不同的加密结果。
观察到密钥长度的增加可以提高加密的安全性。
2.非对称加密算法实验-选择了RSA加密算法,其基本原理是使用两个密钥,公钥用于加密,私钥用于解密。
- 编写了Python程序实现RSA非对称加密算法,并进行了调试。
-成功生成了一对密钥,并使用公钥加密明文,私钥解密密文,观察到加密和解密结果正确。
3.数字签名实验-了解到数字签名可以保证数据的完整性和真实性。
- 编写了Python程序实现数字签名的生成和验证功能,并进行了调试。
-成功生成了一对密钥,并使用私钥对明文进行签名,再使用公钥验证签名的正确性。
四.实验总结本次实验通过对称加密算法、非对称加密算法和数字签名的实现,加深了对信息安全技术的理解和认识。
通过实际操作,掌握了加密算法和数字签名的基本原理和实现过程。
信息安全技术实验报告

信息安全技术实验报告信息安全技术实验报告1、引言在这一章节中,要介绍实验的背景和目的,并给出实验的整体概述。
2、实验设计在这一章节中,要详细说明实验的设计和方法,包括实验所使用的设备和工具,实验所涉及的软件和硬件环境,以及实验的步骤和流程。
3、实验结果在这一章节中,要展示实验的结果和数据,并进行相应的分析和解释。
需要提供实验数据的图表和说明,以支持实验结果的正确性和可靠性。
4、实验讨论在这一章节中,要对实验的结果进行详细的讨论和分析,包括实验结果与实验目的的一致性、实验中可能存在的不确定性和误差以及实验结果的意义和应用。
5、实验总结在这一章节中,要对整个实验进行总结和评价,并提出可能的改进和建议。
同时,还要对实验过程中的问题和困难进行反思和总结,以便未来的实验能够更加顺利和有效地进行。
6、附录在这一章节中,要给出实验过程中使用的代码、配置文件、数据等附件的详细说明和说明。
需要标明每个附件的名称、作用和相关信息。
本文所涉及的法律名词及注释:1、信息安全:指在计算机系统和网络中,保护信息及其基础设施不受未经授权的访问、使用、披露、破坏、修改、干扰,以确保信息的保密性、完整性和可用性的一系列措施和技术。
2、数据隐私:指个人或组织的敏感信息和个人身份信息等数据的保护,以确保不被未经授权的访问、使用、披露和存储。
3、网络攻击:指对计算机系统和网络进行非法的访问、入侵、破坏、干扰或盗取信息等行为。
4、防火墙:指一种安全设备或软件,用于过滤网络流量,防止未经授权的访问和网络攻击。
本文档涉及附件:1、实验代码:文件名为《实验代码:zip》,包含所有实验所需的代码和脚本文件。
2、实验数据:文件名为《实验数据:xlsx》,包含所有实验所的数据和结果。
3、实验配置文件:文件名为《实验配置文件:txt》,包含实验过程中使用的配置文件和参数。
《信息安全技术》实验3报告

《信息安全技术》实验3报告实验3报告:信息安全技术一、实验目的1.了解信息安全技术的概念和原则;2.掌握信息安全技术的实际应用;3.培养信息安全技术分析和解决问题的能力。
二、实验内容本次实验主要包括以下几个方面的内容:1.熟悉数据加密技术,了解对称密钥加密和非对称密钥加密的原理;2.掌握常用的对称密钥加密算法和非对称密钥加密算法;3. 利用Python编程实现对称密钥加密和非对称密钥加密的功能。
三、实验原理1.数据加密技术数据加密技术是信息安全技术中的重要组成部分。
它通过对数据进行加密,使得数据在传输和存储过程中不易被窃取和篡改,从而保护数据的机密性和完整性。
数据加密技术主要分为对称密钥加密和非对称密钥加密两种方式。
对称密钥加密:加密和解密使用相同的密钥,只有密钥的持有者才能解密数据。
常见的对称密钥加密算法有DES、3DES、AES等。
非对称密钥加密:加密和解密使用不同的密钥,即公钥和私钥。
通过公钥加密的数据只能由私钥解密,而私钥加密的数据只能由公钥解密。
常见的非对称密钥加密算法有RSA、ECC等。
2.对称密钥加密算法DES(Data Encryption Standard):是一种对称密钥加密算法,密钥长度为64位。
由于DES的密钥长度较短,易受到暴力破解攻击,因此逐渐被AES替代。
AES(Advanced Encryption Standard):是一种对称密钥加密算法,密钥长度可以为128位、192位或256位。
AES具有较高的安全性和效率,目前广泛应用于各个领域。
3.非对称密钥加密算法RSA(Rivest–Shamir–Adleman):是一种非对称密钥加密算法,密钥长度一般为1024位或2048位。
RSA算法通过大素数的因数分解问题来保证安全性,具有较高的安全性和广泛的应用。
ECC(Elliptic Curve Cryptography):是一种基于椭圆曲线数学问题的非对称密钥加密算法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
江苏科技大系统交互实验报告姓名:秦魏学号:1440501218院系:计算机科学与工程学院实验一DES 加解密算法实验学时:2学时实验类型:验证实验要求:必修一、实验目的1. 学会并实现DES 算法2. 理解对称密码体制的基本思想3. 掌握数据加密和解密的基本过程4. 理解公钥密码体制的基本思想5. 掌握公钥密码数据加密和解密的基本过程6. 理解Hash 函数的基本思想7. 掌握hash 函数软件计算软件/信息的Hash 值的基本过程二、实验内容1、根据DES 加密标准,用C++设计编写符合DES 算法思想的加、解密程序,能够实现对字符串和数组的加密和解密。
例如,字符串为M=“信息安全”,密钥K=“computer”2、根据RSA 加密算法,使用RSA1 软件,能够实现对字符的加密和解密。
3、根据MD5 算法,使用hashcalc 软件和MD5Caculate 软件,能够实现求字符串和文件的HASH 值。
例如,字符串为M=“信息安全”,求其HASH 值三、实验结果// DES.cpp: implementation of the DES class./////////////////////////////////////////////////////////////////////// /#include "stdafx.h"#include "DESlxp.h"#include "DES.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif///////////////////////////////////////////////////////////////////// /// Construction/Destruction///////////////////////////////////////////////////////////////////// /DES::DES(){}DES::~DES(){}// initial permutation IPconst static char IP_Table[64] = {58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4,62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8,57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3,61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7};// final permutation IP^-1const static char IPR_Table[64] = {40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31,38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29,36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27,34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25};// expansion operation matrixstatic const char E_Table[48] = {32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9,8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17,16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25,24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1};// 32-bit permutation function P used on the output of the S-boxesconst static char P_Table[32] = {16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10, 2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25 };// permuted choice table (key)const static char PC1_Table[56] = {57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18,10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36,63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22,14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4};// permuted choice key (table)const static char PC2_Table[48] = {14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32};// number left rotations of pc1const static char LOOP_Table[16] = {1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1};// The (in)famous S-boxesconst static char S_Box[8][4][16] = {// S114, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8, 4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0, 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13, // S215, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10, 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5, 0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15, 13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9, // S310, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8, 13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1, 13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12, // S47, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15, 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9, 10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14,// S52, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9, 14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6, 4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14, 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3, // S612, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11, 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8, 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13, // S74, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1, 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6, 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12, // S813, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7, 1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2, 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11 };///////////////////////////////////////////////////////////////////// /////typedef bool (*PSubKey)[16][48];///////////////////////////////////////////////////////////////////// /////static void SDES(char Out[8], char In[8], const PSubKey pSubKey, bool Type);//标准DES加/解密static void SetKey(const char* Key, int len);// 设置密钥static void SetSubKey(PSubKey pSubKey, const char Key[8]);// 设置子密钥static void F_func(bool In[32], const bool Ki[48]);// f 函数static void S_func(bool Out[32], const bool In[48]);// S 盒代替static void Transform(bool *Out, bool *In, const char *Table, int len);// 变换static void Xor(bool *InA, const bool *InB, int len);// 异或static void RotateL(bool *In, int len, int loop);// 循环左移static void ByteToBit(bool *Out, const char *In, int bits);// 字节组转换成位组static void BitToByte(char *Out, const bool *In, int bits);// 位组转换成字节组///////////////////////////////////////////////////////////////////// /////static bool SubKey[2][16][48];// 16圈子密钥static bool Is3DES;// 3次DES标志static char Tmp[256], deskey[16];///////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// /////// Code starts from Line 130///////////////////////////////////////////////////////////////////// /////void SetKey(const char* Key, int len){memset(deskey, 0, 16);memcpy(deskey, Key, len>16?16:len);SetSubKey(&SubKey[0], &deskey[0]);Is3DES = len>8 ? (SetSubKey(&SubKey[1], &deskey[8]), true) : false; }void SDES(char Out[8], char In[8], const PSubKey pSubKey, bool Type) {static bool M[64], tmp[32], *Li=&M[0], *Ri=&M[32];ByteToBit(M, In, 64);Transform(M, M, IP_Table, 64);if( Type == ENCRYPT ){for(int i=0; i<16; ++i) {memcpy(tmp, Ri, 32);F_func(Ri, (*pSubKey)[i]);Xor(Ri, Li, 32);memcpy(Li, tmp, 32);}}else{for(int i=15; i>=0; --i) {memcpy(tmp, Li, 32);F_func(Li, (*pSubKey)[i]);Xor(Li, Ri, 32);memcpy(Ri, tmp, 32);}}Transform(M, M, IPR_Table, 64);BitToByte(Out, M, 64);}void SetSubKey(PSubKey pSubKey, const char Key[8]) {static bool K[64], *KL=&K[0], *KR=&K[28];ByteToBit(K, Key, 64);Transform(K, K, PC1_Table, 56);for(int i=0; i<16; ++i) {RotateL(KL, 28, LOOP_Table[i]);RotateL(KR, 28, LOOP_Table[i]);Transform((*pSubKey)[i], K, PC2_Table, 48);}}void F_func(bool In[32], const bool Ki[48]){static bool MR[48];Transform(MR, In, E_Table, 48);Xor(MR, Ki, 48);S_func(In, MR);Transform(In, In, P_Table, 32);}void S_func(bool Out[32], const bool In[48]){for(char i=0,j,k; i<8; ++i,In+=6,Out+=4) {j = (In[0]<<1) + In[5];k = (In[1]<<3) + (In[2]<<2) + (In[3]<<1) + In[4];ByteToBit(Out, &S_Box[i][j][k], 4);}}void Transform(bool *Out, bool *In, const char *Table, int len) {for(int i=0; i<len; ++i)Tmp[i] = In[ Table[i]-1 ];memcpy(Out, Tmp, len);}void Xor(bool *InA, const bool *InB, int len){for(int i=0; i<len; ++i)InA[i] ^= InB[i];}void RotateL(bool *In, int len, int loop){memcpy(Tmp, In, loop);memcpy(In, In+loop, len-loop);memcpy(In+len-loop, Tmp, loop);}void ByteToBit(bool *Out, const char *In, int bits){for(int i=0; i<bits; ++i)Out[i] = (In[i>>3]>>(i&7)) & 1;}void BitToByte(char *Out, const bool *In, int bits){memset(Out, 0, bits>>3);for(int i=0; i<bits; ++i)Out[i>>3] |= In[i]<<(i&7);}bool DES::Des_Go(char *Out, char *In, long datalen, const char *Key, int keylen, bool Type){if( !( Out && In && Key && (datalen=(datalen+7)&0xfffffff8) ) ) return false;SetKey(Key, keylen);if( !Is3DES ) { // 1次DESfor(long i=0,j=datalen>>3; i<j; ++i,Out+=8,In+=8)SDES(Out, In, &SubKey[0], Type);} else{ // 3次DES 加密:加(key0)-解(key1)-加(key0) 解密::解(key0)-加(key1)-解(key0)for(long i=0,j=datalen>>3; i<j; ++i,Out+=8,In+=8) {SDES(Out, In, &SubKey[0], Type);SDES(Out, Out, &SubKey[1], !Type);SDES(Out, Out, &SubKey[0], Type);}}return true;}实验二操作系统安全配置实验学时:2学时实验类型:验证实验要求:必修一、实验目的:熟悉Windows NT/XP/2000 系统的安全配置;理解可信计算机评价准则。