实验三使用CryptoAPI完成数据和消息加密解密、签名及验证.doc
文本预览下载声明
实验三 使用CryptoAPI完成数据和消息加密解密、签名及验证
【实验目的】
了解Windows下PKI 的编程接口的层次结构;
了解CryptoAPI的基本用法,实现数据的加密解密、签名及验证,消息的加密解密、签名及验证。
【实验环境】
Windows系统, VC
【实验要求】
1参照msdn的介绍与例程,学会使用加密解密、签名及验证数据和消息的基本步骤,在vc下编译和调试例程。
2按规定的实验格式写出实验报告,主要写出程序的主要流程。
【实验原理】
1. 加密密钥
密钥是密码体系操作的中心,它们必须安全保存,任何人获得某个密钥则对此密钥有关的任何数据都拥有了访问的权限。例如,某人得到了加密某文件的密钥,则他就可以解密此文件了。再比如,获取了对某消息签名的密钥,则可以伪造数字签名。在CryptoAPI中,支持两种类型密钥:会话密钥、公/私密钥对。
在CryptoAPI中,所有的密钥都存储在CSP,CSP负责产生、销毁密钥,并使用它们完成各种密码操作。也可以利用CryptoAPI函数从CSP中导出密钥。
2. 数据编码/解码
通过通信媒介(例如电话线路)传输数据,必须先把数据序列化,即把数据转化为0、1串。在序列化操作中,接到数据的计算机必须能够把数据转化为其原始格式。序列化完成的操作规则称为通信协议,它由软件和数据传输硬件共同完成,其协议一般包含多层
3. 数据加/解密
把明文转化为密文的过程称为加密,反之把密文转化为明文的过程称为解密。加密较大的数据,CryptoAPI中约定用对称加密算法,这种算法中,在加密和解密过程中都使用同一个对称密钥或会话密钥。CryptoAPI中,通过其封装好的加解密函数来实现数据加解密操作,不同CSP提供不同的加解密算法,但常用的算法,一般CSP都提供。
4. 哈希与数字签名
哈希与数字签名一般用于确定数据的完整性和身份鉴别。CryptoAPI中,通过其封装好的哈希与数字签名函数来实现相关操作。微软提供的CSP产生的数字签名遵循RSA标准(PKCS#6),其他CSP可能遵循其他标准。
5. 数字证书
数字证书主要用于安全通信中的身份鉴别。CryptoAPI中,对数字证书的使用管理分为证书与证书库函数、证书验证函数。
6. 数字消息
任何被编码的数据都可称为消息,它是发送给其他人或实体(或从其他人或实体接收到)的编码数据,包括数字证书。在CryptoAPI环境中,消息一般会被签名或加密,或者同时被签名和加密。在CryptoAPI2.0版本中,消息处理函数一般分为两类:底层消息函数,简单消息函数。低级消息函数直接和PKCS#7 消息工作,简化消息函数是比较高级的函数,是对几个低级消息函数和证书函数的封装,用来执行指定任务消息函数
【实验步骤】
1对消息的加密、解密,签名、验证。主要使用简化的消息函数进行消息加密解密。具体API函数如下:加密与解密:CryptEncryptMessage与(CryptDecryptMessage
签名与验证:CryptSignMessage与CryptVerifyMessageSignature
2对数据的加密、解密,签名、验证,使用基本的加密解密函数进行数据块的加密解密。具体API函数如下:加密与解密:CryptEncrypt与CryptDecrypt
签名与验证:CryptSignHash与CryptVerifySignature
【实验结果】
(1)加密文件:
(2)解密文件
(3)数字签名
(4)验证签名
【实验总结】
这次实验让我了解了CryptoAPI的基本用法,实现数据的加密解密、签名及验证,消息的加密解密、签名及验证,了解了Windows下PKI 的编程接口的层次结构,学会了数字信息,数字签名,签名验证。
以后的实验也要加油!
显示全部