数据加密

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于C,C++的信息安全应用
要求: 记笔记; 安装VS2008。平时严格,考试宽松 下载地址: C、C++与JAVA(C#)的关系:语法相似,后者无 指针。前者涉及考研、后者基于网络应用、前 者基于底层。相辅相成。
信息安全原理与应用 赵树升 2012
包括的内容
1、数据加密 2、软件保护 3、病毒分析 4、文档安全 5、网络安全

class CtttApp : public CWinApp //后者是基类 { public: CtttApp(); // 重写 public: virtual BOOL InitInstance(); //应用程序的初始化 // 实现 DECLARE_MESSAGE_MAP() };
信息安全原理与应用 赵树升 2012
用DES的类加密



CDes des; if(keyLen%8)keyLen+=keyLen%8;//必须的, 要考虑到in补0的部分 char *out= new char[len]; des.DoDes(out,in,inLen,key,keyLen,0);
信息安全原理与应用 赵树升 2012
2、C++知识
类:一类事物的抽象,包括了类成员函数与 数据成员 2) 类的声明 class AAA{ public: int x; int GetA(int a); };
1)
信息安全原理与应用 赵树升 2012
3)类对象的定义 AAA a; //静态方式 a.x=5; 动态方式: AAA *p=new AAA(); p->x=5;
信息安全原理与应用 赵树升 2012
C++的排错
1、生成debug 与 release2个版本 2、双击排错
信息安全原理与应用 赵树升 2012
本次课要求
1、C与C++的嘴基础知识 2、生成一个对话框,有按钮、可以修改字体、 找到错误、生成release版本
信息安全原理与应用 赵树升 2012
第一章 数据的加密
1、需要使用到的VC++知识 2、基本概念 3、最简单的加密 4、DES、AES、SCB2加密 5、RSA 、ECC加密 6、数字签名 7、在C#、JAVA中使用加密算法
信息安全原理与应用 赵树升 2012
1、使用VS2008中的VC++
(1)生成对话框程序:文件新建项目
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
(2) 对称密码系统(Symmetric cryptosystem) 如果加密密钥和解密密钥相同,则称其为对称密码加密系统,也叫单 密钥系统或私钥密码系统。它使用单个密钥,既用于加密,也用于解 密。对称密钥加密是加密大量数据的一种行之有效的方法。 对称密码加密有许多种算法,例如DES,AES等。但所有这些算法都 有一个共同的目的,以可还原的方式将明文转换为密文。密文使用加 密密钥编码,对于没有解密密钥的任何人来说它都是没有意义的。由 于对称密码加密在加密和解密时使用相同的密钥,所以这种加密过程 的安全性取决于是否能保证机密密钥的安全。 (3) 非对称密码系统(Asymetric cryptosystem) 非对称密码系统使用两个密钥,分为公钥和私钥,这两个密钥在数学 上是相关的。非对称密码系统也叫双钥密码系统或公钥密码系统。 在非对称密码系统应用中,公钥可在通信双方之间公开传递,或在公 用储备库中发布,但相关的私钥是保密的。只有使用私钥才能解密用 公钥加密的数据。使用私钥加密的数据只能用公钥解密。由于它用私 钥加密的数据只能公钥才能还原,该算法被用在数字签名中。
5)VC操作文件类 CFile
CFile fp; //可以到MDN中去查用法 fp.Open 有新建、读、写、读写四种方式。 fp.Seek 移动文件指针。文件指针是读写的起 始位置。刚打开文件,为0,读写n字节后,向 后移动n字节 fp.Read fp.Write 演练:读一个文件到内存,与0x78异或后再写 入原来文件
信息安全原理与应用 赵树升 2012
3)程序结构
stdafx.h 函数的头文件引用 b) *.h 应用程序的类声明 *.cpp 应用程序的类定义 c) *Dlg.h 应用程序窗口的类声明 *Dlg.cpp 应用程序窗口的类定义 d) *.rc 窗口资源文件
a)
信息安全原理与应用 赵树升 2012
4)应用程序的结构
信息安全原理与应用 赵树升 2012
1、C语言常用知识
1)数据类型 char BYTE char *p BYTE*p2 int DWORD int *pin, DWORD *pw; 结构定义、声明、使用 typedef struct _AAA{ int x; char y; }AAA;
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
程序关闭后的重新打开
信息安全原理与应用 赵树升 2012
添加代码后执行





void CzhaoDlg::OnBnClickedButton1() { //加密的代码在此 MessageBox(L“加密”); //L表示用UNICODE字符方式 } void CzhaoDlg::OnBnClickedButton2() { //解密的代码在此 MessageBox(L"解密"); } //请2组同学重复这个过程 // CzhaoDlg为类的名字, // OnBnClickedButton1()为类里面的函数
定义: AAA a; 使用: a.x=5; a.y=6;
信息安全原理与应用 赵树升 2012
2)常用指令 int x=sizeof(int); for(int i=0; i<100; i++)x+=i; do{ x+=i; if(i==100)break; i++; }while(TRUE);
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
5)窗口的结构
CtttDlg::CtttDlg(CWnd* pParent /*=NULL*/) : CDialog(CtttDlg::IDD, pParent) //后者表示基类 //窗口的构造函数(完成初始化) BOOL CtttDlg::OnInitDialog() //对话框初始化 void CtttDlg::OnBnClickedButton1() //点击按钮后执行的函 数
信息安全原理与应用 赵树升 2012
(5) DES



1971年美国学者塔奇曼(Tuchman)和麦耶(Meyer)根 据信息论创始人香农(Shannon)提出的“多重加密有效 性理论”创立,后于1977年由美国国家标准局颁布的数据 加密标准。 DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油 站、高速公路收费站等领域被广泛应用,以此来实现关键 数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与 POS间的双向认证、金融交易数据包的MAC校验等,均 用到DES算法。 DES算法把64比特的明文输入块变为64位的密文输出块 。如果明文长于64比特,则分组为每组64位,不足则用0 补够64位。
点击按钮后执行的函数

void CtttDlg::OnBnClickedButton1() { MessageBox(“hello”); }
注意: ::表示作用域,即后者是前者的一部分。 void 是类的方法的返回类型、 CtttDlg为类的名 字、 OnBnClickedButton1()为类的一个函数。
信息安全原理与应用 赵树升 2012
1、如何编译? 2、如何排错:从上到下,双击错误 3、生成Release版本(不要VS环境的)
信息安全原理与应用 赵树升 2012
2、数据加密基本知识
(1)密码学(Cryptology) 密码学是研究加密和解密变换的一门科学。通常情况下,人们将可懂 的数据或消息称为明文(Plaintext);将明文变换成的不可懂的数据 称为密文(Ciphertext)。把明文变换成密文的过程叫加密( Encryption);其逆过程,即把密文变换成明文的过程叫解密( Decryption)。明文与密文的相互变换是可逆的变换,并且只存在唯 一的、无误差的可逆变换。完成加密和解密的函数称为密码算法( Algorithm)。在计算机上实现的数据加密算法,其加密或解密变换是 由密钥(Key)来控制的。密钥是由使用密码体制的用户随机选取的 ,密钥成为唯一能控制明文与密文之间变换的关键,它通常是一随机 数据串。
(2)
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
添加按钮
信息安全原理与应用 赵树升 2012
右键属性,修改按钮名字
信息安全原理与应用 赵树升 2012
分别双击2个按钮,就可以添加代码了
5)指针与变量的关系
指针是无符号32位整数,是变量的地址 int x=5; int *px=&x; 你能画出内存图吗?
信息安全原理与应用 赵树升 2012
6)字符串操作
a) b)
有ASCII码与UNICODE方式 定义字符串 char *s1=“abcd”; //只读 wchar_t *s2=L”qqqq”; //用二进制看看格式吧 char ss1[300]; strcpy(ss1,”qqqq”); strcat(ss1,”vvvvv”); //附加 printf(ss1);
3) 函数的定义、调用:回忆上学期三种传参数 大家再默写一次吧。 4)内存分配:各自的优缺点 静态方式: char s[1024]; 使用:s[5]=„a‟; 动态方式: char *ps=new char[1024]; ps[5]=„a‟; 或 *(ps+5)=„a‟; delete []ps
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
加密代码
CFile fp; fp.Open(L”C:\\aaa.txt”, CFile::modeReadWrite); int len=(int)fp.GetLength(); BYTE *p=new BYTE[len]; fp.Read(p, len); for(int i=0; i<len ; i++)p[i]^=0xff; fp.SeekToBegin(); fp.Write(p, len); fp.Close(); delete []p; 解密代码和上面完全一样。 上来一组试验,只许抄,不许拷贝代码。锻炼排错能力。
其它都不重要了!
信息安全原理与应用 赵树升 2012
4) VC操作字符串的类 CString
类似JAVA的string。有问题查MSDN CString s=“abcdef”; //初始化。注意大小写 char p=“hhhhhh”; s+=p;
回忆:C#的字符串
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
(4)最简单的加密







在实际软件开发中,如果对被保护的数据安全要求不高,可以采用 最简单方式,速度快而且编程简单。主要有三种: (1) 异或:我们来用C++ 实现加密解密一个文件吧 设明文数据为0x31,与密钥0xff异或则变为0xce,解密时则与密钥 再异或一次,数据恢复为原来值Baidu Nhomakorabea BYTE e=0x31; //明文, BYTE是无符号字节 BYTE m=0x31^0xff=0xce;//密文 BYTE r=0xce^0xff=0x31;//恢复为明文 (2) 移位 设明文数据为0x31323334,循环右移位5位,变为数据 0xa1899199,再循环左依位5位,恢复原来的值。 (3) 查表
信息安全原理与应用 赵树升 2012
3、在VC中操作
1)建立对话框应用程序 新建项目VC++MFC应用程序
信息安全原理与应用 赵树升 2012
2)添加按钮、编辑按钮下的代码。右键选中可以 编辑属性、双击可以编辑对应的代码(点击按 钮后执行的代码)。程序的执行在:调试开 始执行。
信息安全原理与应用 赵树升 2012
相关文档
最新文档