- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CSP相关
CSP相关
本文由foeyes贡献
Crypto API 学习笔记
微软公司在 NT4.0 以上版本中提供了一套完整的 Crypto API 的函数,支持密钥交换,数据 加密解密,数字签名,给程序员带来了很大方便,用户在对软件进行保护的时候可以直接利 用 Crypto API 来完成这些工作,比如计算注册码,检查程序的完整性等。 我们在用这些的 API 进行加密解密的时候,只需要知道如何去应用它们,而不必知道它们 的底层实现。如果想知道它们更为详尽的资料,可以查找相关的资料。 对 Crypto API 只是业余型的感兴趣,想通过写学习笔记,一是让自己记的更牢固些,二是 想把自己的学的跟大家探讨一下。写的不好,大家多多原谅。我主要通过 MSDN 来学习, 例子也是完全取自 MSDN。 首先,是 Crypto API 运行的环境。 首先需要 Crypt32.lib,将它加到 project-setting-link 下面,当然你也可以在程序中用 #pragma comment (lib, crypt32.lib)加入。 在 程 序 开 头 , 你 要 加 入 两 个 头 文 件 windows.h 和 Wincrypt.h , 和 一 个 #define MY_ENCODING_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING) 在正式应用 API 进行一系列的加密解密的时候,需要有一些准备工作,下面是介绍一些在 正式开始时所需要了解和做的工作。 生成密钥和密钥容器 我们知道,在进行加密解密的时候,我们需要一个密钥进行加密,和一个密钥进行解密, 加密密钥和解密密钥可能相同,也可能不同。于是在我们进行加密解密的开始时,我们首先 需要有密钥。下面这个程序,完成了三个任务,并且介绍了一些函数的用法。 任务一:获取一个指定的密钥容器,如果这个容器不存在,创建一个。 任务二:如果容器中不存在一个签名密钥对,创建一个 任务三:如果容器中不存在一个交换密钥对,创建一个 //------------------------------------------------------------------下面这段程序使用到了这几个函数 CryptAcquireContext CryptDestroyKey CryptGenKey CryptGetUserKey // Copyright (c) Microsoft Corporation. All rights reserved. #include stdio.h #include tchar.h #include windows.h #include Wincrypt.h //------------------------------------------------------------------void MyHandleError(LPTSTR psz) { _ftprintf(stderr, TEXT(An error occurred in the program. \n)); _ftprintf(stderr, TEXT(%s\n), psz);
_ftprintf(stderr, TEXT(Error number %x.\n), GetLastError()); _ftprintf(stderr, TEXT(Program terminating. \n)); exit(1); } // End of MyHandleError. 上面这个函数是一个异常处理函数,当出现错误的时候,出现提示,并推出程序。以后的程 序中都有这个函数,以后就会将这个函数的实现省去。现在这个函数的实现在后面。 void main(void) { HCRYPTPROV hCryptProv; //定义一个 CSP 模块的句柄。“CSP 模块,请查看《加密解 密二》222 页,那里有简单的说明,这里就不说了。 LPCTSTR pszContainerName = TEXT(My Sample Key Container);//用一个 TEXT 宏定 义一个容器的名字,
if(CryptAcquireContext( //这个函数是获取有某个容器的 CSP 模块的指针,成功返回 TRUE。 ;hCryptProv, //指向一个 CSP 模块句柄指针,里面用指定的容器 pszContainerName, //指定容器的名称 NULL, //这个参数这里用的是缺省值, 指得是缺省得 CSP 模块, 你也可以传入一 个 LPCTSTR 类型的字符串,指定 CSP 模块 PROV_RSA_FULL, //确定密钥的类型 0)) //常设为 0,还有些其他的类型,请看
您可能关注的文档
- 05高护.doc
- -选文-Euthanasia-2014-12-1.doc
- 02数值变量的统计描述.ppt
- 20091103 - 金居开发铜箔-CO-TEC-COPPER-FOIL.doc
- 2009.11.03 - 金居开发铜箔-CO-TEC-COPPER-FOIL.doc
- 16小脑、55525.ppt
- 2010高考卷阅读理解词汇集.doc
- 2007年7月高等教育自学考试英语翻译试卷及答案.doc
- 2013年执业医师技能考试-病史采集万能公式.doc
- 2013秋八年级上册英语知识点.doc
- 语文-广东省肇庆市2025届高三第二次模拟试卷和答案(肇庆二模).docx
- 中国通信行业运行情况月度报告(2024年1-11月).pdf
- 2024年中国新能源汽车行业全球竞争力分析与各国进口贸易法规影响白皮书-特易资讯.pdf
- 热电“三保”与碳排双控.pdf
- 数据中心行业分析报告 2025.pdf
- 【灼鼎咨询】2024年自动驾驶行业知识报告(智能驾驶、新能源汽车、NOA).pdf
- 政治-江苏省苏州市2024-2025学年2025届高三第一学期学业期末质量阳光指标调研卷试题和答案.docx
- 政治-广东省东莞市、揭阳市、韶关市2025届高三期末教学质量检查试题和答案.docx
- 自适应物理安全与信息安全系统 -智能制造的动态安全方法 2025.pdf
- 【国联证券】通信行业专题研究:Marvell AI day,算力需求推动光互联加速迭代.pdf
最近下载
- 数码相机-SONY索尼-HDR-SR1E说明书.pdf
- 数学的发展历程.pptx
- 医药销售年终总结PPT.pptx
- 多维阅读第5级SmokeJumpersHelp消防队在行动方芳-完整版PPT课件.pptx
- 日本大学2015留学.ppt
- 高标准农田假设检验批表格.doc VIP
- 2024年湖北省烟草专卖局(公司)招聘笔试真题.docx VIP
- 课题申报书:家校共育背景下儿童社会情感能力的异质性发展机制及促进研究.docx VIP
- 2025年八省联考陕西高考生物试卷真题答案详解(精校打印).pdf VIP
- Unit 1 Meeting New Friends (教学设计)-2024-2025学年闽教版英语五年级上册.docx
文档评论(0)