- 浏览: 2022260 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (651)
- ACE (35)
- BAT (9)
- C/C++ (116)
- fast-cgi (14)
- COM (27)
- python (59)
- CGI (4)
- C# (2)
- VC (84)
- DataBase (29)
- Linux (96)
- P2P (6)
- PHP (15)
- Web (6)
- Memcached (7)
- IME输入法 (11)
- 设计模式 (2)
- 搜索引擎 (1)
- 个人情感 (4)
- 笔试/面试 (3)
- 一亩三分地 (33)
- 历史 (2)
- 地理 (1)
- 人物 (3)
- 经济 (0)
- 不仅仅是笑哦 (43)
- 小故事大道理 (2)
- http://www.bjdsmyysjk120.com/ (0)
- http://www.bjdsmyy120.com/ (0)
- 它山之石可以攻玉 (15)
- 大学生你关注些什么 (28)
- 数据恢复 (1)
最新评论
-
luokaichuang:
这个规范里还是没有让我明白当浏览器上传文件时,STDIN的消息 ...
FastCGI规范 -
effort_fan:
好文章!学习了,谢谢分享!
com技术简介 -
vcell:
有错误os.walk(strPath)返回的已经是全部的文件和 ...
通过python获取目录的大小 -
feifeigd:
feifeigd 写道注意:文章中的CPP示例第二行 #inc ...
ATL入门:利用ATL编写简单的COM组件 -
feifeigd:
注意:文章中的CPP示例第二行 #include " ...
ATL入门:利用ATL编写简单的COM组件
学习CRYPTO第二天
因为是.net安全,所以必须在VC7上运行下面面的一些例子(今天害得我在VC6上运行,错误一大堆),上面介绍了CRYPTAPI的一些基础,下面我就不按照MSDN的往下看了,下面的几个专题是Hashing,Signing Data,Creating and Receiving Enveloped Data Messages以及Encrypting and Decrypting.这些专题等需要用到的时候再具体看吧。主要专注于证书的操作。不过cryptui.dll又要求是在windows 2003 Server版本才可以,哎,只好等晚上再去买盘了。
1,解码CERT_INFO结构
给定一个证书,第一步是调用函数CertCreateCertificateContext解码证书BLOB。当这个函数被调用,那么产生一个编码证书的复制品,创建一个CERT_CONETXT类型的结构和一个CERT_INFO类型的结构。一个certificate_context包含一个原始证书 BLOB,一个CERT_CONETXT类型的结构以及一个CERT_INFO类型的结构。下面我们具体看看CERT_CONETXT以及 CERT_INFO的结构(wincrypt.h):
typedef struct _CERT_CONTEXT {
DWORD dwCertEncodingType;
BYTE *pbCertEncoded;
DWORD cbCertEncoded;
PCERT_INFO pCertInfo;
HCERTSTORE hCertStore;
} CERT_CONTEXT, *PCERT_CONTEXT;
typedef const CERT_CONTEXT *PCCERT_CONTEXT;
typedef struct _CERT_INFO {
DWORD dwVersion;
CRYPT_INTEGER_BLOB SerialNumber;
CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm;
CERT_NAME_BLOB Issuer;
FILETIME NotBefore;
FILETIME NotAfter;
CERT_NAME_BLOB Subject;
CERT_PUBLIC_KEY_INFO SubjectPublicKeyInfo;
CRYPT_BIT_BLOB IssuerUniqueId;
CRYPT_BIT_BLOB SubjectUniqueId;
DWORD cExtension;
PCERT_EXTENSION rgExtension;
} CERT_INFO, *PCERT_INFO;
typedef struct _CERT_EXTENSIONS {
DWORD cExtension;
PCERT_EXTENSION rgExtension;
} CERT_EXTENSIONS, *PCERT_EXTENSIONS;
由上面的三个结构可以明显的看出证书的存储过程。(具体参数意思可以由参数名看出来)
2,编码一个CERT_INFO结构
编码过程和解码过程是相反的,下面事例如何增加签发者到CERT_INFO结构中。
1,创建一个包含签发者名字的字符串。
2,创建一个CERT_RDN_ATTR结构的数组,它初始化后能够包含刚刚创建的字符串。
3,创建一个CERT_RDN结构的数组,它包含刚刚初始化的CERT_RDN_ATTR结构的数组
4,创建一个CERT_NAME_INFO结构指向刚刚创建的CERT_RDN结构的数组的指针
5,调用CryptEncodeObject函数来获取输出编码后BLOB的长度。
6,为BLOB分配内存空间
7,再次调用CryptEncodeObject函数,将有关编码信息写入
8,设置CERT_INFO结构中的Issuer.cbData为第5步得到的长度,设置Issuer.pbData为第6步得到的地址,那么现在签发者就存在于CERT_INFO结构中了。
添加一个编码后的扩展信息到CERT_INFO结构中
1,初始化一个扩展信息结构。
2,调用CryptEncodeObject,来获取所需空间大小。
3,分配空间
4,再次调用CryptEncodeObject来获取编码后的信息。
5,创建一个CERT_EXTENSION结构数组
6,初始化CERT_EXTENSION,并且在CERT_EXTENSION中添加刚刚编码后的信息。
7,初始化CERT_INFO结构的rgExtension,并且把他指向CERT_EXTENSION结构数组
发表评论
-
__declspec(novtable) 的用法
2010-11-27 14:37 1562__declspec(novtable) 的用法 __d ... -
解决URLDownloadToFile缓存问题的两种方法
2010-09-09 15:18 2877解决URLDownloadToFile缓存问题的两种方法 ... -
修改richedit背景
2010-07-19 22:52 1629RichEditCtrl::SetBackgroundCo ... -
使用ADO封装类的数据库程序开发实例(下)
2010-07-12 15:30 1460使用ADO封装类的数据库 ... -
使用ADO封装类的数据库程序开发实例(上)
2010-07-12 15:28 1201使用ADO封装类的数据库 ... -
VC防止窗口和控件闪烁的方法
2010-07-09 21:16 20091、将Invalidate()替换为Invalidate ... -
防止窗口闪烁地办法
2010-07-09 21:13 1495防止窗口闪烁地办法 也许我们都碰到过这种情况,当你 ... -
使用ADO _ConnectionPtr
2010-07-06 16:04 5253// GetUser.cpp : Defines the ... -
VC用ADO访问数据库全攻略
2010-07-06 15:29 1789VC用ADO访问数据库全 ... -
深入GetMessage和PeekMessage (引自-MSDN技术组)
2010-06-10 16:59 3713深入GetMessage和PeekMessage (引自 ... -
界面编程总结(1)
2010-06-02 13:32 3995原文地址:http://blog.csdn.net/byx ... -
获取信息的有关Windows API
2010-05-27 10:01 3134获取信息的有关Windows API 1.窗口信息 ... -
VC中如何实现窗口的隐藏
2010-05-13 10:08 7845VC中如何实现窗口的隐藏 用MFC做的Dialog ... -
SetConsoleCtrlHandler 处理控制台消息
2010-05-07 17:32 18085SetConsoleCtrlHandler 处理控制台消 ... -
解决决错误: error C2850: 'PCH header file'
2010-04-27 19:45 1935解决决错误: error C2850: 'PCH hea ... -
VC++ GDI+编程的字体和文本绘制
2010-04-13 13:12 7964字体是文字显示和打印的外观形式,它包括了文字的字样、风格和尺寸 ... -
VC利用GDI+显示透明的PNG图片
2010-04-12 16:59 115181.在你将要使用GDI+的工程中,完成初始化 ... -
GDI+编程基础(一)GDI+ Vs GDI
2010-04-12 15:59 2322下载源代码一、GDI GDI是位于应用程序与不同硬件之间 ... -
VC画图
2010-04-12 15:50 1525BOOL DrawPic(HDC hdc, TCHAR* ... -
对话框的数据交换--MFC深入浅出
2010-04-12 10:43 2443对话框数据交换指以下两种动作,或者是把内存数据写入对应的控 ...
相关推荐
这里介绍一些CryptoAPI的知识,也是让自己对CryptoAPI做一个系统的总结(针对证书操作这块)。 微软加密服务体系 微软加密服务体系CryptoAPI的结构如下图所示,微软加密服务体系包含三层结构和两个接口,分别为应用...
javax.crypto.Cipher; javax.crypto.KeyGenerator; javax.crypto.spec.SecretKeySpec等
通过阅读和分析这些代码,不仅可以加深对算法原理的理解,还可以学习如何在实际应用中实现和优化加密过程。 总结来说,Crypto1算法在Mifare Classic系统中扮演着重要角色,它以LFSR为基础,结合异或运算和密钥更新...
根据提供的信息,我们可以总结出关于Crypto++库的学习笔记,特别是关注于如何在C++中实现密码算法的关键知识点。 ### Crypto++简介 Crypto++是一个免费、开源的C++类库,用于实现加密、解密以及散列函数等操作。它...
#### 第二步:安装Visual Studio Community 下载完成后,需要安装`vs_community_ENU.exe`。在安装过程中,请选择自定义安装,并勾选以下组件进行安装。由于这一步骤耗时较长,建议耐心等待直至完成。 #### 第三步...
《信息安全TS-Crypto.Code学习资料详解》 在信息化社会中,信息安全成为了不可或缺的重要领域,而TS-Crypto.Code作为其中的一个重要研究课题,涉及到密码学、网络安全、数据加密等多个子领域。本篇将深入探讨TS-...
在IT领域,加密技术(CRYPTO)是一种至关重要的安全手段,用于保护数据的隐私和完整性。PowerBuilder是一款功能强大的开发工具,尤其适用于构建数据库应用程序。本主题将详细探讨如何在PowerBuilder 12中利用加密...
《深入理解Crypto++库:源码解析与应用实践》 Crypto++,又称cryptopp,是一个开源的、跨平台的加密库,提供了丰富的密码学...因此,对Crypto++源码的学习和研究,对于提升信息安全技能和开发安全应用具有重要的价值。
在Golang中,`golang.org/x/crypto`库是一个非常重要的第三方加密库,它提供了多种加密算法和协议的实现,包括但不限于对称加密、非对称加密、哈希函数、消息认证码(MAC)、密码学随机数生成器、密钥交换、数字签名...
"CryptoAPI培训教程.pdf"这份文档应该详细介绍了CryptoAPI的使用方法、示例代码和最佳实践,对于想要学习和使用CryptoAPI的开发者来说,是一份非常宝贵的参考资料。通过阅读和实践,可以深入理解如何在实际项目中...
IIS Crypto 是一个免费工具,让管理员能够在 Windows Server 2008、2012、2016 和 2019 上启用或禁用协议、密码、哈希和密钥交换算法。一键禁用不安全的 SSL 3、TLS 1.0,开启TLS 1.2、TLS 1.3 非常方便
在进行安全相关的编程时,加密库是必不可少的工具,而 `Crypto` 模块就是Python3中的一个加密库,用于实现各种加密算法和密码学功能。然而,对于初学者或者不熟悉Windows环境的开发者来说,安装 `Crypto` 库可能会...
在IT行业中,加密技术是确保数据安全的重要工具。本文将深入探讨标题为“crypto_...通过学习和理解“crypto_cryptoapi.c”中的代码,开发者可以更好地理解如何在实际项目中结合这两种技术,提高应用的安全性和效率。
在本文中,我们将深入探讨CryptoAPI的基本概念、功能以及如何通过提供的实例源码来学习和应用。 首先,CryptoAPI的核心功能包括: 1. **加密与解密**:CryptoAPI支持各种加密算法,如RSA、DES、3DES、AES等,...
Crypto.dllCrypto.dll
IIS Crypto是一个免费工具,使管理员能够在Windows Server 2008,2012和2016上启用或禁用协议,密码,哈希和密钥交换算法。它还允许您重新排序IIS提供的SSL / TLS密码套件,实施最佳实践只需单击一下,即可创建自定义...
`key`是加密所需的密钥,通常需要保持安全,不被第三方获取。 `crypto-js`的使用并不局限于基本的加密解密,还可以进行更复杂的操作,如生成哈希值、实现HMAC等。例如,生成MD5哈希值: ```javascript var hash = ...
- **Base64编码/解码**:在传输或存储二进制数据时,常将其转换为Base64字符串形式。 4. **使用示例**: 使用 `crypto-js` 加密和解密数据的代码可能会如下所示: ```javascript var CryptoJS = require(...
"_crypto-js npm包_" 是一个基于JavaScript的加密库,它提供了多种加密算法,包括但不限于AES(高级加密标准)。这个npm(Node Package Manager)安装包使得开发者能够在Node.js环境中方便地集成和使用加密功能。AES...
赠送jar包:commons-crypto-1.0.0.jar; 赠送原API文档:commons-crypto-1.0.0-javadoc.jar; 赠送源代码:commons-crypto-1.0.0-sources.jar; 赠送Maven依赖信息文件:commons-crypto-1.0.0.pom; 包含翻译后的API...