基于CryptoAPI的文件加解密系统的设计与实现(完整资料)

上传人:博****1 文档编号:504015269 上传时间:2022-10-03 格式:DOC 页数:99 大小:2.57MB
返回 下载 相关 举报
基于CryptoAPI的文件加解密系统的设计与实现(完整资料)_第1页
第1页 / 共99页
基于CryptoAPI的文件加解密系统的设计与实现(完整资料)_第2页
第2页 / 共99页
基于CryptoAPI的文件加解密系统的设计与实现(完整资料)_第3页
第3页 / 共99页
基于CryptoAPI的文件加解密系统的设计与实现(完整资料)_第4页
第4页 / 共99页
基于CryptoAPI的文件加解密系统的设计与实现(完整资料)_第5页
第5页 / 共99页
点击查看更多>>
资源描述

《基于CryptoAPI的文件加解密系统的设计与实现(完整资料)》由会员分享,可在线阅读,更多相关《基于CryptoAPI的文件加解密系统的设计与实现(完整资料)(99页珍藏版)》请在金锄头文库上搜索。

1、基于CryptoAPI的文件加解密系统的设计与实现(完整资料)(可以直接使用,可编辑 优秀版资料,欢迎下载)基于rptPI的文件加解密系统的设计与实现摘要:随着网络技术的快速发展,使我们的生活丰富多彩,工作的效率也提高了不少。尽管网络的出现给我们带来了很多的福利和方便,但网络安全问题也在时时困扰着我们,病毒、黑客的侵犯,各种威胁之声的不断传出,网络安全问题也就成为了社会关注的重点问题。文件的安全就是安全问题之一,文件可能会包含了很多的机密,一旦被黑客窃取,那损失是不可想象的.所以下面我们简单的谈谈文件加解密的相关算法。因为过于复杂的加密算法实现起来非常困难,所以在过去,许多应用程序只能使用非常

2、简单的加密技术,这样做的结果就是加密的数据很容易就可以被人破译.而使用Microsot提供的加密应用程序接口(即Cryptgraphy API),或称ryptoAI,就可以方便地在应用程序中加入强大的加密功能,而不必考虑基本的算法.我们利用CyoPI来实现对文件的加密和解密。关键词:文件的加解密,CrypoAPI。一、 设计要求与实现:基于CpPI的文件加解密系统的设计与实现二、 设计环境与工具1 软件环境、工具Wiow 8。1、visua studio 212rypoAPI加密服务提供者CSP加密服务相关的所有操作都在CP实现,它是真正实现加密相关服务的独立模块,既可以由软件实现也可以由硬件

3、实现.每个CSP必须包含一个动态链接库和一个签名文件,签名文件用于保证底层CP的安全性,CrptoAPI接口在加载每个CS时,需要验证CP的签名,如果签名无效,则拒绝加载,P的签名由微软公司签发。同时,每个CSP都有一个名字和一个类型,名字必须是唯一的,这样便于ryptoAPI找到对应的CP。CS是真正实行加密的独立模块,可以由软件实现也可以由硬件实现。CP必须符合CryptoPI接口规范。每个CSP有一个密钥库,密钥库用于存储密钥。每个密钥库包括一个或多个密钥容器(Keyntinrs)。每个密钥容器中包含属于一个特定用户的所有密钥对。每个密钥容器被赋予一个唯一的名字。在销毁密钥容器前,CSP

4、将永久保存每一个密钥容器,包括保存每个密钥容器中的公/私钥对。 每个CSP都有一个名字和一个类型.每个CS的名字是唯一的,这样便于CyptoAPI找到对应的CSP.目前已经有种CSP类型,并且还在增长.下表列出它们支持的密钥交换算法、签名算法、对称加密算法和Hah算法.二、详细设计(1)原理概述ptAI是一组函数,为了完成数学计算,必须具有密码服务提供者模块(CSP)。Microsof通过捆绑SA Bs Pridr在操作系统级提供一个CSP,使用RSA公司的公钥加密算法,更多的SP可以根据需要增加到应用中。事实上,S有可能与特殊硬件设备(如智能卡)一起来进行数据加密。CryptoAPI接口允许

5、简单的函数调用来加密数据,交换公钥,散列一个消息来建立摘要以及生成数字签名。它还提供高级的管理操作,如从一组可能的CSP中使用一个CSP。此外,rypoAPI还为许多高级安全性服务提供了基础,包括用于电子商务的ET,用于加密客户机/服务器消息的,用于在各个平台之间来回传递机密数据和密钥的PFX,代码签名等等。数据加解密,程序分为四大主要部分:1、 获取CS句柄:真正实现加密相关服务的独立模块.2、 获取加密密钥:进行加、解密,必然需要构造密钥.两种方法:通过哈希值构造通过随机数构造。3、 数据加密与解密:实现对数据进行加密解密操作。4、 相关资源释放:释放申请的相关资源。(下图为数据加解密的流

6、程)(参考网络安全程序设计教程李红娇 著)(2)CrytoAI应用程序的编译环境包含的头文件 icludendw.h inldwincryt.h包含的静态链接库链接CrypPI函数必须有静态库ryp32。ib的支持,部分CryptoI函数可能还需要静态库advai3.lib及yI。lib的支持。若在VC+。0和V2012上编译程序,则需加上以下语句# ifnde_WN32WINT# efne _WI3_IN 0x0ndi(3)实验步骤)在VS2012下实现基于ryptoAP的文件加密。a、创建会话密钥为保证数据加密效率,CrypoAPI规定数据加密操作必须基于对称密码进行。于是,加密方进行加密

7、操作首先必须创建会话密钥,一般可以通过调用函数CyptenKe或CryptDeieKe创建,在创建会话密钥时指定加密算法。b、加密数据在创建会话密钥后,则可以调用Cryptncypt函数进行加密操作。加密操作需要注意的是每次加密数据块的长度必须根据具体的算法和算法类型确定,一般来说,加密数据块长度为算法规定的基准加密块长度的整数倍。对于分组密码,需为密文数据块预留一个基准块长度的空间。c、安全保存或交换会话密钥数据加密完成后,当在今后的某个时间或其他用户需要解密数据时,必须保存会话密钥以备后用,或者是传输会话密钥给特定用户以使其能正确进行解密操作。2)在VS2012下实现基于CytoAPI的文

8、件解密。a、获取会话密钥根据保存或传输会话密钥方式不同,进行相应的操作正确获取会话密钥b、解密数据利用获取的会话密钥调用函数ryptDecrypt解密数据,它和函数CryptEcryt互为逆操作。同样的,解密操作需要注意的是每次解密数据块的长度必须根据具体的算法和算法类型确定,一般来说,解密数据块长度为算法基准加密块长度的整数倍。要求:1)算法的详细实现过程。a)获得cs句柄b)构造密钥c)数据加密d)数据解密e)释放相关资源2) 算法实现的流程图三、实验结果原文件加密后解密后PS:我们在加密的时候,没有采用通过随机数创建密钥,然后只能通过输入密码创建加密密钥.截图:未加密四、设计总结由于多方

9、尝试并编写penss对文件的加解密方法,均以失败告终,所以我们小组决定采用新的加密算法,即Windos CytoAP,由微软公司提出的一种安全加密应用服务框架。本次试验的主要内容是基于CryptoAPI的文件加解密系统的设计与实现,在仔细看懂代码的基础上,真正明白了CrypoPI的结构体系。在加密操作时,首先要创建会话密钥,在创建会话密钥时指定加密算法,注意的是,创建会话密钥时,它制定具体的加密算法应该注意具体的CS是否支持此算法。我们在做加密的时候,没有加入通过随机数创建会话密钥,只能进行输入密码创建加密密钥.然后是进行数据的加密操作,当完成以后要进行安全保存或者交换会话密钥.解密时要获取会

10、话密钥,然后进行数据解密。toAPI除直接用于加密数据外,还为许多高级安全性服务提供了基础,包括用于电子商务的SET,用于加密客户机/服务器消息的CT,用于在各个平台之间来回传递机密数据和密钥的FX,代码签名等等。通过此次编写程序,我对基于CrpoAI的文件加解密系统有了更深层次的了解,对之前做过的基于ryptAP 实现文件完整性校验的实验理解的更加透彻。在编写程序的过程中,遇到了很多棘手的问题,但是这些问题,我通过了找老师,上网查询问题出错的原因等方法努力的寻求答案,到现在为止,程序已经顺利完成,运行无阻。自己根据要求,从零开始做一份实验真的不容易,需要对整体结构局势进行把握,在做之前要做好

11、多重准备工作,例如运行环境(软、硬件环境)、输入的形式和输入值的范围、输出的形式描述、功能描述。细节决定成败,对于我而言,这次的作业让我清楚认识到,注重细节的重要性,有时候一个字母的大小写,几个变量的数据类型的统一性,考虑后选择的更为合适的数据类型,重复执行的问题等等,这些都让我不断进步.五、 源代码加密:#indef _WIN32_INNdefine_WIN32_N 0x40#endifinluesdio.h#incldetring.h#ncldiosram#incldeinludewincrypt.hdineMYENCOIN_TY (PKS_7_ASNECOIN X09_ENCDIG)de

12、fieKEYLETH0x080000#efnECRYT_ALGORITMCG_RC4deineNRYPBLOCKIE classEncpuic:HYPPGCrptrv();BOOLncyptl(PHARsSourc, PCHRszstinaion,PCHAszPassword); HCYPKEGnKeyyaswor(HCRYPTROVhryptPov,PCHsPasord);;includstramincldeEnchusingnaeestd;/ 功能:加密原文szource文件,加密后的数据存储在zsnatin文件中/ 参数:/ srce:原文文件名/ zstinatio:加密后数据存储文件

13、/ szPasword:用户输入的密码BLEn::EcryptFile(PCHAsSource, PCADestnaton, PCHRszPasword)/ 变量申明与初始化。IE hSurc; FL*hDesinatin; HRTPROVhrptrv; HCRPTKEhe; BYEpbBuer; DWdBlockLen; DODdBufLen; DWORDdCount; / 打开原文文件. if(Source = open(zSource,rb”)cut”原文文件szSouc已经打开。n”;lse out打开原文文件出错!endl; / 打开目标文件。 if(hDesinatin =fpen(szDenton,wb))cut目标文件”szDestnation”已经打开。nenl;lsect”打开目标文件出错!”el; /获取加密服务者句柄hCryPro=GetCyptPo();/ 创建会话密钥。if(!sPassod | strcmp(zssword,)= ) /Key= GneByRadom(hCryptPv, hDestati);当输入

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号