安全管理系统设计

avatar
作者
筋斗云
阅读量:0

一、项目基础

1.安全管理系统简介

安全管理可以从 IT 治理和 IT 运行两个层面来进行分析设计。在不同的层面,安全管理有着不同的内涵和外延。教材中的安全管理系统设计侧重于IT 运行,并可作为落实IT 治理的技术手段。安全管理的目标是以业务安全需求为导向,以保证企业业务连续性为目的,通过对业务信息系统的运行状态、安全事件、资产漏洞、威胁、风险预警、安全策略安全知识等安全要素进行收集、分析管理提供以业务风险管理为核心的安全运行管理平台。

2.驱动当今安全管理发展的主要因素

内因:国内信息化水平发展进入新阶段。

外因:法律法规和风险与内控管理。

3.IT源环境的定义

IT 资源环境是指包括网络和安全基础设施、主机、服务器、支撑服务和应用中间件,以及业务运营系统在内的企业和组织所有设施的总和,它既有硬件设施,也有软件设施。

4.业务的定义

业务,是业务系统的简称。从技术层面上看,业务是一组 IT 资源及其相互关系的集合。
在我国信息安全领域,一般把业务的技术支撑架构称为计算机信息系统,简称信息系统
在GB17859-1999 中计算机信息系统被定义为由计算机及其相关的和配套的设备、设施(含网络)构成的按照一定的应用目标和规则对信息进行采集、加工、存储、传输、检索等处理的人机系统。在GB/T20271-2006 中,进一步指出信息系统一般由支持软件运行的硬件系统(含计算机硬件和网络硬件系统)、对系统资源进行管理和为用户使用提供基本支持的系统软件(含计算机操作系统软件、数据库管理系统软件、网络协议软件和管理软件)、实现信息系统应用功能的应用系统软件等组成。这些硬件和软件共同协作运行,以实现信息系统的整体功能。

5.对字符串加密项目的界面

在程序开发过程中,字符串是较为常见的数据类型,经常用于存放文本信息,如果在字符串中保存一些敏感信息,不希望别人看到,就需要对字符串进行加密

6.一维数组

数组是包含若干相同类型的变量这些变量都可以通过索引进行访问数组中的变量称为数组的元素,数组能够容纳元素的数量称为数组的长度。数组中的每个元素都具有唯一的索引与其相对应,数组的索引从零开始。一维数组的声明语法如下typell arrayNametype:存储数据的数据类型arryname:数组名字

一维数组初始化:

intl arr=new int[5];// 通过 new 来创建,里面的元素默认为0

int[] arr=new int[5]{1,2,3,4,5}

string[] s1;s1=new string[2]

hello,world};

string[]  s1=(hello,world);//s1.length

为数组长度

7.方法

1).1.C#中,类是一种面向对象编程的基本构建块,它可以包含属性、字段、方法和事件等成员。类的方法是类中的行为,用于执行特定的操作。
方法的声明:方法由方法名称、参数列表、返回类型和方法体组成。方法的声明通常遵循以下语法:
[访问修饰符][修饰符]返回型方法名(参数列)  
{
//方法体

2).访问修饰符:用于控制方法的访问级别,例如public 、 private 、protected等。

修饰符:用于提供额外的功能或特性,例如static 、 virtual、 abstract 等。

返回类型:指定方法返回的数据类型,可以是基本类型、自定义类型或 void(表示无返回值)。

方法名:方法的名称,用于标识方法。参数列表:方法接受的参数,可以包含零个或多个参数,每个参数由参数类型和参数名组成。

方法体:包含方法的实际执行逻辑。

方法的调用:要调用类中的方法,需要通过类的实例或类名直接调用。例如:
ClassName instance = new ClassName0) :instance.MethodName(arguments);// 通过实例调用方法
ClassName.MethodName(arguments);// 通过类名调用静态方法

8.方法的访问修饰符

方法可以使用不同的访问修饰符来控制其可访问性。常见的访问修饰符包括:
public:可以从任何地方访问private:只能在同一类中访问。()protected:只能在同一类或派生类中访问internal:只能在同一程序集中访问。protected internal:可以在同一程序集中或派生类中访问。需要注意的是:如果在类中的方法未明确指定访问修饰符,则该方法的访问性将默认为 private (私有)。私有方法只能在同一类中访问,无法从类的外部进行访问。这是c#中方法访问修饰符的默认行为。

9.修饰符

修饰符:用于提供额外的功能或特性,例如static 、 virtual、 abstract 等。static:表示该方法是一个静态方法,可以直接通过类名调用,而不需要创建类的实例。

10.参数和返回值

方法的参数传递:方法可以接受不同类型的参数,包括值类型、引用类型和输出参数。在 C# 中,参数可以按值传递、按引用传递或按输出传递。默认情况下,参数是按值传递的,即方法接收参数的副本。
方法的返回值:方法可以返回一个值,也可以不返回值(使用 void 关键字)。返回值的类型必须与方法声明中的返回类型匹配。使用 return 语句可以将结果返回给调用方。

二、加密项目

1.新建项目

1).选择 Visual Studio2015工具栏中的“文件”→“新建”→“项目”命令,打开“新建项目”对话框。


2).选择“windows窗体应用程序”选项,命名为“encryptortest”选择保存路径,然后单击“确定”按钮创建一个窗体应用程序。

 2.设计加密项目界面

1).项目界面参考如下图 

3.添加事件处理函数

1).选中“加密”按钮

2).在“加密”按钮的属性窗口中,点击“事件”
即闪电图标

3). 在“Click”后的区域双击,就会跳转到事件处理函数代码界面

4.编写事件处理函数

使用if-else语句判断用户输入的密钥长度是否为4:

A密长度为4,则调用加密方法

B.密长度不为4,则向用户提示“密长度不符合”

textBox2.Text.Length

textBox2:用户输入密钥的文本框

textBox2.Text:密钥文本框中的文本内容

textBox2.Text.Length:获取文本内容的长度
MessageBoxShow(”密钥长度不符!“,”提示”)

MessageBox.Show()是一个用于显示消息框的静态方法。它接受两个参数:第一个参数是要显示的消息内容,这里是字符串“密钥长度不符!”,表示密钥长度不符的提示信息;第二个参数是消息框的标题,这里是字符串提示”,表示提示框的标题。

5.编写加密方法

public string toencryptor(string key,string words)
1.公有方法; 2.返回值为字符串类型; 3.参数需要两个字符串类型数据:第一个是密钥字符串,第二个是明文字符串

Encoding.Unicode.GetBytes(key); 在C#中,Encoding.Unicode.GetBytes()是一个用于将字符串转换为 Unicode 编码字节数组的方法调用。

GetBytes’是Encoding类的一个方法,用于将字符串转换为字节数组。它接受一个字符串作为参数,并返回表示该字符串的字节数组。

MemoryStream code = new MemoryStream();这段代码的目的是在程序中创建一个用于临时存储数据的内存流。 code 是一个内存流的对象,你可以使用它进行读写操作内存流在处理需要在内存中进行临时存储和处理的数据时非常有用,特别是在涉及大量数据时,可以避免频繁的磁盘读写操作。

使用C#的CryptoStream 类创建加密流对象可以通过NET 框架中的加密算法实现要使用 CryptoStream 类的构造函数创建 CryptoStream 对象,需要提供目标流(例如文件流或内存流)、加密算法的转换器(ICryptoTransform ),以及  CryptoStreamMode  枚举值。
在本代码段中
目标流: code
加密算法的转换器:new DESCryptoServiceProvider0.CreateEncryptor(ekey,ekey)CryptoStreamMode 枚举值:CryptoStreamMode.Write,写入模式,解密的过程类似,只需将CryptoStreamMode.Write 改为CryptoStreamMode.Read

 new DESCryptoServiceProvider0.CreateEncryptor(ekey, ekey)这行代码的作用是创建了一个 DES 加密器,用给定的密钥和初始化向量来执行加密操作。代码使用了 C# 中的DESCryptoServiceProvider 类,它被用于执行 DES 加密算法。CreateEncryptor 方法创建了一个用于加密数据的加密器对象,并接受两个参数: 1.用作密钥的字节数组,这个密必须是合法的 DES 密,通常是 8个字节长:2.初始化向量(Initialization Vector,IV),用于加密的初始输入。在密码学中,初始化向量(IV)是在加密过程中使用的固定大小的随机值。

1.pstrm.Write(ewords, 0, ewords.Length);这行代码是使用CryptoStream对象将文件内容加密后写入目标流的操作。ewords:这是要加密的文件内容,它是一个字节数组 (byte[])。字节数组是一种表示文件内容的方式,而加密操作通常是在字节级别进行的。
0:这是文件内容的起始位置(偏移量)。在这里,我们从文件内容的开头开始加密。这是一个整数值,表示从字节数组的哪个位置开始读取数据进行加密。ewords.Length:这是要加密的数据长度。它是一个整数值,表示从起始位置(偏移量)开始要加密的字节数。

2.pstrm,FlushFinalBlock(调用“FlushFinalBlock()方法来刷新加密流的最后一个数据块。当使用CryptoStream对象进行加密时,数据被分成多个数据块并逐个加密。最后一个数据块可能不满足加密算法的块大小要求,因此需要进行填充。 FlushFinalBlock0方法会处理这个最后的数据块,包括填充和加密,并将其写入目标流。
3.byte[] pwords = code.ToArray(0);code 是一个内存流对象,它可以在内存中存储数据。通过调用ToArray0方法,可以将内存流中的数据以字节数组的形式返回。

1. pstrm. Close () ;     code.Close();
pstrm 是加密流对象, code 是内存流对象。为了确保正确释放资源并避免资源泄漏,我们应该在使用完这些流之后显式地关闭加密流和内存流。

2.return Convert.ToBase64String(pwords);pwords 是字节数组,存放加密后的内容,使用ToBase64String ()将内容转换为字符串类型并返回。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!