基于C,C++的信息安全应用
要求:
记笔记;
安装VS2008。平时严格,考试宽松
下载地址:
C、C++与JAVA(C#)的关系:语法相似,后者无指针。前者涉及考研、后者基于网络应用、前者基于底层。相辅相成。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
包括的内容
1、数据加密
2、软件保护
3、病毒分析
4、文档安全
5、网络安全
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 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
定义:
AAA a;
使用:
=5;
=6;
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 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
3) 函数的定义、调用:回忆上学期三种传参数
大家再默写一次吧。
4)内存分配:各自的优缺点
静态方式: char s[1024];
使用:s[5]=‘a’;
动态方式: char *ps=new char[1024];
ps[5]=‘a’; 或 *(ps+5)=‘a’;
delete []ps
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
5)指针与变量的关系
指针是无符号32位整数,是变量的地址
int x=5;
int *px=&x;
你能画出内存图吗?
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
6)字符串操作
有ASCII码与UNICODE方式
定义字符串
char *s1=“abcd”; //只读
wchar_t *s2=L”qqqq”; //用二进制看看格式吧
char ss1[300];
strcpy(ss1,”qqqq”);
strcat(ss1,”vvvvv”); //附加
printf(ss1);
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
2、C++知识
类:一类事物的抽象,包括了类成员函数与数据成员
类的声明
class AAA{
public: int x;
int GetA(int a);
};
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
3)类对象的定义
AAA a; //静态方式
=5;
动态方式:
AAA *p=new AAA();
p->x=5;
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
3、在VC中操作
1)建立对话框应用程序
新建项目VC++MFC应用程序
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
2)添加按钮、编辑按钮下的代码。右键选中可以编辑属性、双击可以编辑对应的代码(点击按钮后执行的代码)。程序的执行在:调试开始执行。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
点击按钮后执行的函数
void CtttDlg::OnBnClickedButton1()
{
MessageBox(“hello”);
}
注意: ::表示作用域,即后者是前者的一部分。
void 是类的方法的返回类型、 CtttDlg为类的名字、 OnBnClickedButton1()为类的一个函数。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
3)程序结构
函数的头文件引用
*.h 应用程序的类声明
*.cpp 应用程序的类定义
* 应用程序窗口的类声明
* 应用程序窗口的类定义
d) *.rc 窗口资源文件
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
4)应用程序的结构
class CtttApp : public CWinApp //后者是基类
{
public:
CtttApp();
// 重写
public:
virtual BOOL InitInstance(); //应用程序的初始化
// 实现
DECLARE_MESSAGE_MAP()
};
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
5)窗口的结构
CtttDlg::CtttDlg(CWnd* pParent /*=NULL*/)
: CDialog(CtttDlg::IDD, pParent) //后者表示基类
//窗口的构造函数(完成初始化)
BOOL CtttDlg::OnInitDialog() //对话框初始化
void CtttDlg::OnBnClickedButton1() //点击按钮后执行的函数
其它都不重要了!
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
4) VC操作字符串的类 CString
类似JAVA的string。有问题查MSDN
CString s=“abcdef”; //初始化。注意大小写
char p=“hhhhhh”;
s+=p;
回忆:C#的字符串
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
5)VC操作文件类 CFile
CFile fp; //可以到MDN中去查用法
有新建、读、写、读写四种方式。
移动文件指针。文件指针是读写的起始位置。刚打开文件,为0,读写n字节后,向后移动n字节
演练:读一个文件到内存,与0x78异或后再写入原来文件
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
C++的排错
1、生成debug 与 release2个版本
2、双击排错
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
本次课要求
1、C与C++的嘴基础知识
2、生成一个对话框,有按钮、可以修改字体、找到错误、生成release版本
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
第一章 数据的加密
1、需要使用到的VC++知识
2、基本概念
3、最简单的加密
4、DES、AES、SCB2加密
5、RSA 、ECC加密
6、数字签名
7、在C#、JAVA中使用加密算法
信息安全原理与应用 赵树升 2012
1、使用VS2008中的VC++
(1)生成对话框程序:文件新建项目
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
(2)
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
添加按钮
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
右键属性,修改按钮名字
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
分别双击2个按钮,就可以添加代码了
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
程序关闭后的重新打开
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
添加代码后执行
void CzhaoDlg::OnBnClickedButton1()
{
//加密的代码在此
MessageBox(L“加密”); //L表示用UNICODE字符方式
}
void CzhaoDlg::OnBnClickedButton2()
{
//解密的代码在此
MessageBox(L"解密");
}
//请2组同学重复这个过程
// CzhaoDlg为类的名字,
// OnBnClickedButton1()为类里面的函数
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
1、如何编译?
2、如何排错:从上到下,双击错误
3、生成Release版本(不要VS环境的)
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
2、数据加密基本知识
(1)密码学(Cryptology)
密码学是研究加密和解密变换的一门科学。通常情况下,人们将可懂的数据或消息称为明文(Plaintext);将明文变换成的不可懂的数据称为密文(Ciphertext)。把明文变换成密文的过程叫加密(Encryption);其逆过程,即把密文变换成明文的过程叫解密(Decryption)。明文与密文的相互变换是可逆的变换,并且只存在唯一的、无误差的可逆变换。完成加密和解密的函数称为密码算法(Algorithm)。在计算机上实现的数据加密算法,其加密或解密变换是由密钥(Key)来控制的。密钥是由使用密码体制的用户随机选取的,密钥成为唯一能控制明文与密文之间变换的关键,它通常是一随机数据串。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
(2) 对称密码系统(Symmetric cryptosystem)
如果加密密钥和解密密钥相同,则称其为对称密码加密系统,也叫单密钥系统或私钥密码系统。它使用单个密钥,既用于加密,也用于解密。对称密钥加密是加密大量数据的一种行之有效的方法。
对称密码加密有许多种算法,例如DES,AES等。但所有这些算法都有一个共同的目的,以可还原的方式将明文转换为密文。密文使用加密密钥编码,对于没有解密密钥的任何人来说它都是没有意义的。由于对称密码加密在加密和解密时使用相同的密钥,所以这种加密过程的安全性取决于是否能保证机密密钥的安全。
(3) 非对称密码系统(Asymetric cryptosystem)
非对称密码系统使用两个密钥,分为公钥和私钥,这两个密钥在数学上是相关的。非对称密码系统也叫双钥密码系统或公钥密码系统。
在非对称密码系统应用中,公钥可在通信双方之间公开传递,或在公用储备库中发布,但相关的私钥是保密的。只有使用私钥才能解密用公钥加密的数据。使用私钥加密的数据只能用公钥解密。由于它用私钥加密的数据只能公钥才能还原,该算法被用在数字签名中。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
(4)最简单的加密
在实际软件开发中,如果对被保护的数据安全要求不高,可以采用最简单方式,速度快而且编程简单。主要有三种:
(1) 异或:我们来用C++ 实现加密解密一个文件吧
设明文数据为0x31,与密钥0xff异或则变为0xce,解密时则与密钥再异或一次,数据恢复为原来值。
BYTE e=0x31; //明文, BYTE是无符号字节
BYTE m=0x31^0xff=0xce;//密文
BYTE r=0xce^0xff=0x31;//恢复为明文
(2) 移位
设明文数据为0x31323334,循环右移位5位,变为数据0xa1899199,再循环左依位5位,恢复原来的值。
(3) 查表
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
加密代码
CFile fp;
(L”C:\\”, CFile::modeReadWrite);
int len=(int)();
BYTE *p=new BYTE[len];
(p, len);
for(int i=0; i<len ; i++)p[i]^=0xff;
();
(p, len);
();
delete []p;
解密代码和上面完全一样。
上来一组试验,只许抄,不许拷贝代码。锻炼排错能力。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
(5) DES
1971年美国学者塔奇曼(Tuchman)和麦耶(Meyer)根据信息论创始人香农(Shannon)提出的“多重加密有效性理论”创立,后于1977年由美国国家标准局颁布的数据加密标准。
DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。
DES算法把64比特的明文输入块变为64位的密文输出块。如果明文长于64比特,则分组为每组64位,不足则用0补够64位。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
用DES的类加密
CDes des;
if(keyLen%8)keyLen+=keyLen%8;//必须的,要考虑到in补0的部分
char *out= new char[len];
(out,in,inLen,key,keyLen,0);
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
用DES的类解密
CDes des;
if(keyLen%8)keyLen+=keyLen%8;//必须的,要考虑到in补0的部分
char *out= new char[len];
(out,in,inLen,key,keyLen,1);
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
结果如下
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
注意如下:
1、密码是8个字节长
2、如果文件的长度不是8的倍数,则最好将内容与实际长度一起加密。
下面完整演示:
CDes的使用;文件内容与长度一起加密;解密时恢复原来文件长度。
然后请同学们自己来做一遍。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
DES加密一个文件
BYTE key[8]={0x34,0x88,0xf7,0x99,0x6d,0xa5,0x7b,0x96};
CFile fp;
(L”C:\\”, CFile::modeReadWrite);
int len=(int)();
int realLen=len;
if(len%8)len+=(8-len%8)+8; //最后8字节放文件长度
BYTE *p=new BYTE[len];
(p, len);
memcpy(&p[len-8], &realLen, 4);
CDes des;
char *out= new char[len];
(out,p,len,key,8,0);
();
(p, len);
();
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
BYTE key[8]={0x34,0x88,0xf7,0x99,0x6d,0xa5,0x7b,0x96};
CFile fp;
(L”C:\\”, CFile::modeReadWrite);
int len=(int)();
BYTE *p=new BYTE[len];
(p, len);
CDes des;
char *out= new char[len];
(out,p,len,key,8,1);
();
(p, len);
int realLen=0;
memcpy(realLen&, &p[len-8], 4);
(realLen);
();
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
用随机数生成密钥
BYTE key[8];
srand( (unsigned)time( NULL ) );
for(int i=0; i<8; i++)key[i]=(BYTE) rand() ;
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
(6) AES加密
密码学中的高级加密标准(Advanced Encryption Standard,AES),又称 高级加密标准Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿高级加密标准的甄选流程。(Rijdael的发音近于 "Rhinedoll"。)
比DES速度慢,更安全。常用于企业文档的加密。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位。AES加密有很多轮的重复和变换。大致步骤如下:1、密钥扩展(KeyExpansion),2、初始轮(Initial Round),3、重复轮(Rounds),每一轮又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,4、最终轮(Final Round),最终轮没有MixColumns。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
下面的AES中,密钥是16字节的。被加密或解密数据必须采用分组方式,每16字节为一组。最后数据不够16字节,要补齐。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
加密
#include "“
BYTE key[16];
srand( (unsigned)time( NULL ) );
for(int i=0; i<16; i++) key[i]=(BYTE)rand();
Aes aes(16, (unsigned char*)key);
long mLen=1024*1024;
pDat= new BYTE[mLen];
pDat2=new BYTE[mLen];
CFile fp;
(from,CFile::modeReadWrite);
int circle=()/mLen;
for(long j=0; j<circle; j++){
(pDat,mLen); //读取个对象,每个对象的长度是字节
for(long i=0;i<(mLen/16);i++) (pDat+i*16,pDat2+i*16);
(0-mLen, CFile::current);
(pDat2, mLen);
}
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
long leftnum=()%mLen;
if(leftnum)
{
memset(pDat,0,mLen);
(pDat,leftnum);
int left=leftnum/16;
if(leftnum%16)left++;
for(int i=0; i<left; i++)(pDat+i*16,pDat2+i*16);
(0-leftnum, CFile::current);
(pDat2, left*16);
}
();
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
解密
#include "“
BYTE key[16]={.....}; //要事先知道哦
Aes aes(16, (unsigned char*)key);
long mLen=1024*1024;
pDat= new BYTE[mLen];
pDat2=new BYTE[mLen];
CFile fp;
(from,CFile::modeReadWrite);
int circle=()/mLen;
for(long j=0; j<circle; j++){
(pDat,mLen); //读取个对象,每个对象的长度是字节
for(long i=0;i<(mLen/16);i++) aes. InvCipher(pDat+i*16,pDat2+i*16);
(0-mLen, CFile::current);
(pDat2, mLen);
}
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
long leftnum=()%mLen;
if(leftnum)
{
memset(pDat,0,mLen);
(pDat, leftnum);
int left=leftnum/16;
if(leftnum%16)left++;
for(int i=0; i<left; i++)aes. InvCipher(pDat+i*16,pDat2+i*16);
(0-leftnum, CFile::current);
(pDat2, left*16);
}
();
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
思考:当加密时如果文件长度不是16的倍数,文件加密后变长。如何模仿DES的做法,在文件解密后长度不变?
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
(7) RSA加密
1978年就出现了这种算法,它是第一个既能用于数据加密也能用于数字签名的算法。算法的名字以发明者的名字首字符命名:RonRivest, AdiShamir 和Leonard Adleman。
RSA算法之所以具有安全性,是基于数论中的一个特性事实:即将两个大的质数合成一个大数很容易,而相反的过程则非常困难。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
RSA 算法描述
1.密钥的产生
(1) 选两个保密的大素数 p和q。
(2) 计算n=p*q,φ(n)=(p-1)*(q-1),其中φ(n)是n的欧拉函数值。
(3) 选一整数e,使满足1<e<φ(n),且gcd(φ(n),e)=1。gcd(φ(n),e)=1即是要满足φ(n)与e互为质数。
(4) 计算d,使满足d*e=1mod φ(n)。
(5) 以{e,n}为公开钥,{d,n}为秘密钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。
2.加密
先将明文m按比特串分组,使得每个分组对应的十进制数小于n,对每组的明文作加密运算。
加密信息 m(二进制表示)时,设把m分成等长数据块 m1,m2,...,mi,…,块长为s ,其中 mi<= n,s尽可能的大。对应的分组密文ei是:
ei = mi^e(mod n) 。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
3.解密
mi =ei^d(mod n) 。
4.举例
选p=7,q=17。求n=p*q=119,且φ(n)=(p-1)*(q-1)=96。取e=5,满足1<e<φ(n),且gcd(φ(n),e)=1。确定满足d*e=1 mod 96 且小于的d,因为 77*5=385=4*96+1,所以选d为77,因此公开钥为{5,119},秘密钥为{77,119}。设明文 m=19,则由加密过程得到密文为:
c=195 mod 119= 2476099 mod 119 =66 。
解密为:
6677 mod 119 = 19 。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
(8)ECC加密
ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)。现在我们描述一个利用椭圆曲线进行加密通信的过程: 1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。 2、用户A选择一个私有密钥k,并生成公开密钥K=kG。 3、用户A将Ep(a,b)和点K,G传给用户B。 4、用户B接到信息后 ,将待传输的明文编码到Ep(a,b)上一点M(编码方法很多,这里不作讨论),并产生一个随机整数r(r<n)。 5、用户B计算点C1=M+rK;C2=rG。 6、用户B将C1、C2传给用户A。 7、用户A接到信息后,计算C1-kC2,结果就是点M。因为 C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M 再对点M进行解码就可以得到明文。 在这个加密通信中,如果有一个偷窥者H ,他只能看到Ep(a,b)、K、G、C1、C2 而通过K、G 求k 或通过C2、G求r 都是相对困难的。因此,H无法得到A、B间传送的明文信息。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
使用方法
#include "“
#pragma comment(lib, "")
CEccEncrypt cee;
cee. ECCGenerateKey(); //产生密钥对
(filepath, ecryptFile, pubKey);
//用公钥加密文件
(filepath, decryptedFile, priKey);
//用私钥解密文件
见例子
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
ECC 加密举例
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
1、ECC加密开发包中的“CRYPTOPP”放到文件夹 \myECC\myECC下
2、文件 和也放到
文件夹 \myECC\myECC下
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
添加项目
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
添加代码:头文件、库文件
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
双击按钮添加代码
void CECC加密Dlg::OnBnClickedButton1()
{ //生成缺省的密钥对
CEccEncrypt cee;
();
}
void CECC加密Dlg::OnBnClickedButton2()
{ //用公钥对文件加密成
CEccEncrypt cee;
("","");
}
void CECC加密Dlg::OnBnClickedButton3()
{//用私钥把文件解密成
CEccEncrypt cee;
("","");
}
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
在程序路径下建立新文件
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
(9)Md5防篡改:单向散列函数
单向散列函数(简称“H函数”或“Hash函数”)用于对要传输的数据作运算生成信息摘要,它并不是一种加密机制,但却能产生信息的数字“指纹”,它的目的是为了确保数据没有被修改或变化,保证信息的完整性不被破坏。
单向散列函数最主要的用途是数字签名。具体过程为:
(1) 甲先用单向散列函数对某个信息(如合同的电子文件)A进行计算,得到128位的结果B,再用私钥K对B进行加密,得到C,该数据串C就是甲对合同A的签名。
(2) 他人(乙)的验证过程为:乙用单向散列函数对A进行计算,得到结果B1,对签名C用甲的公钥K1进行加工,得到数据串B2,如果B1=B2,则签名是真的,反之签名则为假冒的。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
应用举例:
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
#include "“
md5 myMd5;
myMd5. Update(chInput, nInputLen);//可以循环
myMd5. Finalize(); //结束
myMd5. Digest(); //得到MD5值,16字节数组
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
附:C++使用文件打开对话框
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,NULL, this);
= (BSTR)L"C:\\Program Files";
//设置对话框默认呈现的路径
=L"可执行文件(*.exe)\0*.exe\0\0";
//L表示使用宽字符
if(() != IDOK)return;
CString strFilePath=();
// CString 是字符串类
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
附:搜索文件
CString m_FileDir;
wchar_t szDisplayName[_MAX_PATH];
BROWSEINFO bi;
ZeroMemory(&bi, sizeof(BROWSEINFO));
= m_hWnd;
// = BIF_RETURNONLYFSDIRS;
= szDisplayName;
= L"选择一个文件夹";
m_FileDir = szFolder;//选择的文件夹路径
搜索文件夹代码如下(没有考虑到搜索子文件夹):
CString DirName="C:\\Program Files\\UDG_Scaner\\had\\*.*";
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
CFileFind OneFile;
CString fName="",name="";
BOOL BeWorking;
BeWorking = ( DirName );
while ( BeWorking ) {
BeWorking = ();
if ( !() && !() )
{
fName=();
name= ();
break;
}
}
();
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012
作业
1、用DES对文件加密
2、用AES对文件加密
3、用ECC对文件加密
4、用MD5对文件进行签名
5、MD5与AES的综合应用。MD5数据放在最后
6、使用对话框,可以选择加密算法、产生随机数密钥,对文件加密解密。
已经掌握的同学可以去学习在C#和JAVA中如何实现。
信息安全原理与应用 赵树升 2012
信息安全原理与应用 赵树升 2012