- 浏览: 2037546 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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组件
#include "stdafx.h" #include <malloc.h> #include <windows.h> #include <wincrypt.h> #pragma comment(lib, "Crypt32.lib") #define MY_TYPE (PKCS_7_ASN_ENCODING | X509_ASN_ENCODING) #define SIGNER_NAME L"yangsheng" #define CERT_STORE_NAME L"MY" void HandleError(char* s); int main(int argc, char* argv[]) { HCERTSTORE hStoreHandle; BYTE* pbMessage = (BYTE*)"Need sign message"; DWORD cbMessage = strlen((char*)pbMessage)+1; PCCERT_CONTEXT pSignerCert; CRYPT_SIGN_MESSAGE_PARA SigParams; DWORD cbSignedMessageBlob; BYTE* pbSignedMessageBlob; const BYTE* MessageArray[] = {pbMessage}; DWORD MessageSizeArray[1]; MessageSizeArray[0] = cbMessage; //start sign ..... printf("raw message....\n"); printf("%s\n",pbMessage); if(!(hStoreHandle = CertOpenStore(CERT_STORE_PROV_SYSTEM,0,NULL,CERT_SYSTEM_STORE_CURRENT_USER, CERT_STORE_NAME))) { printf("open cert store failed!"); } //Get sign cert pointer if(pSignerCert = CertFindCertificateInStore(hStoreHandle,MY_TYPE,0,CERT_FIND_SUBJECT_STR,SIGNER_NAME,NULL)) { printf("find a cert ok.....\n"); } else { printf("cann't look a cert!\n"); } //sign struct initialize SigParams.cbSize = sizeof(CRYPT_SIGN_MESSAGE_PARA); SigParams.dwMsgEncodingType = MY_TYPE; SigParams.pSigningCert = pSignerCert; SigParams.HashAlgorithm.pszObjId = szOID_RSA_MD5; SigParams.HashAlgorithm.Parameters.cbData = NULL; SigParams.cMsgCert = 1; SigParams.rgpMsgCert = &pSignerCert; SigParams.cAuthAttr = 0; SigParams.dwInnerContentType = 0; SigParams.cMsgCrl = 0; SigParams.cUnauthAttr = 0; SigParams.dwFlags = 0; SigParams.pvHashAuxInfo = NULL; SigParams.rgAuthAttr = NULL; if(CryptSignMessage(&SigParams,FALSE,1,MessageArray,MessageSizeArray,NULL,&cbSignedMessageBlob)) { printf("sign after size %d\n",cbSignedMessageBlob); } if(!(pbSignedMessageBlob = (BYTE*)malloc(cbSignedMessageBlob))) { printf("alloc failed!\n"); } if(CryptSignMessage(&SigParams,FALSE,1,MessageArray,MessageSizeArray,pbSignedMessageBlob,&cbSignedMessageBlob)) { printf("sign successful!!\n"); } /* verify sign */ DWORD cbDecodeMessageBlob; BYTE* pbDecodeMessageBlob; CRYPT_VERIFY_MESSAGE_PARA verifyParams; verifyParams.cbSize = sizeof(CRYPT_VERIFY_MESSAGE_PARA); verifyParams.dwMsgAndCertEncodingType = MY_TYPE; verifyParams.hCryptProv = 0; verifyParams.pfnGetSignerCertificate = NULL; verifyParams.pvGetArg = NULL; if(CryptVerifyMessageSignature(&verifyParams,0,pbSignedMessageBlob,cbSignedMessageBlob,NULL,&cbDecodeMessageBlob,NULL)) { printf("total buffer%d\n",cbDecodeMessageBlob); } if(!(pbDecodeMessageBlob = (BYTE*)malloc(cbDecodeMessageBlob))) { printf("alloc failed!\n"); } if(CryptVerifyMessageSignature(&verifyParams,0,pbSignedMessageBlob,cbSignedMessageBlob,pbDecodeMessageBlob,&cbDecodeMessageBlob,NULL)) { printf("verify message:\n%s\n",(char*)pbDecodeMessageBlob); } /* some release operation........ */ if(pbSignedMessageBlob) free(pbSignedMessageBlob); if(pbDecodeMessageBlob) free(pbDecodeMessageBlob); if(pSignerCert) CertFreeCertificateContext(pSignerCert); if(CertCloseStore(hStoreHandle,CERT_CLOSE_STORE_CHECK_FLAG)) { printf("all release...\n"); } else { printf("......."); } return 0; }
发表评论
-
__declspec(novtable) 的用法
2010-11-27 14:37 1593__declspec(novtable) 的用法 __d ... -
解决URLDownloadToFile缓存问题的两种方法
2010-09-09 15:18 2930解决URLDownloadToFile缓存问题的两种方法 ... -
修改richedit背景
2010-07-19 22:52 1654RichEditCtrl::SetBackgroundCo ... -
使用ADO封装类的数据库程序开发实例(下)
2010-07-12 15:30 1482使用ADO封装类的数据库 ... -
使用ADO封装类的数据库程序开发实例(上)
2010-07-12 15:28 1221使用ADO封装类的数据库 ... -
VC防止窗口和控件闪烁的方法
2010-07-09 21:16 20331、将Invalidate()替换为Invalidate ... -
防止窗口闪烁地办法
2010-07-09 21:13 1519防止窗口闪烁地办法 也许我们都碰到过这种情况,当你 ... -
使用ADO _ConnectionPtr
2010-07-06 16:04 5274// GetUser.cpp : Defines the ... -
VC用ADO访问数据库全攻略
2010-07-06 15:29 1805VC用ADO访问数据库全 ... -
深入GetMessage和PeekMessage (引自-MSDN技术组)
2010-06-10 16:59 3735深入GetMessage和PeekMessage (引自 ... -
界面编程总结(1)
2010-06-02 13:32 4018原文地址:http://blog.csdn.net/byx ... -
获取信息的有关Windows API
2010-05-27 10:01 3155获取信息的有关Windows API 1.窗口信息 ... -
VC中如何实现窗口的隐藏
2010-05-13 10:08 7879VC中如何实现窗口的隐藏 用MFC做的Dialog ... -
SetConsoleCtrlHandler 处理控制台消息
2010-05-07 17:32 18175SetConsoleCtrlHandler 处理控制台消 ... -
解决决错误: error C2850: 'PCH header file'
2010-04-27 19:45 1960解决决错误: error C2850: 'PCH hea ... -
VC++ GDI+编程的字体和文本绘制
2010-04-13 13:12 7990字体是文字显示和打印的外观形式,它包括了文字的字样、风格和尺寸 ... -
VC利用GDI+显示透明的PNG图片
2010-04-12 16:59 115581.在你将要使用GDI+的工程中,完成初始化 ... -
GDI+编程基础(一)GDI+ Vs GDI
2010-04-12 15:59 2344下载源代码一、GDI GDI是位于应用程序与不同硬件之间 ... -
VC画图
2010-04-12 15:50 1548BOOL DrawPic(HDC hdc, TCHAR* ... -
对话框的数据交换--MFC深入浅出
2010-04-12 10:43 2471对话框数据交换指以下两种动作,或者是把内存数据写入对应的控 ...
相关推荐
数字签名生成.txt文件可能包含了关于如何创建和验证数字签名的步骤和示例代码。在实际应用中,数字签名不仅用于电子邮件的安全传输,还广泛应用于HTTPS协议(网站的SSL/TLS证书)、软件发布(确保软件未被篡改)以及...
Java 数字签名和数字证书是网络安全领域中的重要概念,它们在确保数据的完整性和认证信息来源的可靠性方面发挥着关键作用。在这个Java源码包中,我们可能找到了用于生成数字签名和数字证书的相关代码,这对于理解和...
在合同签署中,数字签名提供了法律认可的身份认证和不可否认性。 **总结** filedsv软件是理解和实践数字签名技术的一个实用工具。通过使用该软件,用户可以学习到数字签名的工作原理,体验其在数据安全和身份验证...
本示例"常见加解密及数字签名Demo"旨在提供一个实践性的平台,帮助开发者理解和应用这些概念。以下将详细介绍这两个主题以及可能涉及的相关知识点。 首先,加解密是确保数据安全的基本手段。加密是将明文信息转化为...
Java 数字签名是一种用于确保数据完整性和来源可信性的安全机制,它在网络安全中扮演着至关重要的角色。在Java中,我们可以使用内置的Java Cryptography Extension (JCE)库来实现RSA、DSA和ECC这三种不同的签名算法...
`www.pudn.com.txt`可能是指向该网站上关于数字签名软件的更多资料,而`v30CSharpdemoSQL`可能是一个SQL数据库文件,包含示例代码或测试数据,用于演示如何在C#环境中操作数字签名。 综上所述,C#实现的数字签名...
Android数字签名是...总结来说,Android数字签名是保障应用安全性和可信任性的重要步骤,它确保了应用的源代码完整性和开发者身份的真实性。开发者需要理解并掌握这一过程,以便于正确发布和分发Android应用程序。
在提供的`java数字签名jar.rar`和`java数字签名.zip`文件中,可能包含了具体的示例代码,展示了如何使用Java实现这些步骤。通过查看和学习这些代码,你可以更好地理解Java中的数字签名工作原理,以及如何在实际项目...
1. 数字签名概念:数字签名结合了非对称加密和哈希函数,提供数据完整性验证和发送者身份认证。 2. Signature类:Java提供的数字签名接口,可以实现RSA、DSA等算法。 3. 签名过程:生成消息摘要(哈希值),用私钥...
7. **适用场景**:数字签名广泛应用于软件分发、电子邮件安全、移动应用签名、代码签名等领域,以增强数据交换的安全性和可信度。 在“添加数字签名3”这个压缩包文件中,很可能包含了实现这一过程的相关工具、教程...
DSA,全称Digital Signature Algorithm(数字签名算法),是一种基于公钥密码学的数字签名协议,由美国国家安全局(NSA)设计,旨在提供一个安全的数据认证方法。在电子通信和互联网交易中,DSA数字签名被广泛用于...
- 私钥:每个证书都对应一个私钥,用于解密通过公钥加密的数据以及生成数字签名。 2. **配置 SSLContext** - 服务器端:使用 `SslContextBuilder.forServer()` 创建服务器上下文,提供服务器的私钥和证书。 - ...
`给EXE文件加数字签名.files`可能是一个包含相关辅助文件的目录,这些文件可能包括证书、示例脚本或配置文件,用于支持签名过程。例如,它可能包含了证书存储的位置,或者在批量处理多个EXE文件时需要用到的批处理...
标题"PKI/CA与数字证书技术大全"暗示了主题是关于公钥基础设施(Public Key Infrastructure, PKI)和认证授权机构(Certification Authority, CA),以及与之相关的数字证书技术。这是一套全面的资料,旨在帮助读者...
以下是计算MD5摘要的示例代码: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class DigestExample { public static void main(String[] args) throws ...
这个“rsa.rar”压缩包包含的源代码实现了RSA算法在数字签名领域的应用,主要用于验证信息的完整性和来源的真实性。 在数字签名中,RSA算法通常分为两个主要步骤:签名生成和签名验证。以下是对这两个步骤的详细...
`P7Verify_CSharp`可能是一个包含示例代码或库的压缩文件,它可能提供了更具体的操作步骤和示例,帮助开发者在C#环境中进行PKCS#7签名和验证。通过研究和理解这些代码,你可以更好地理解和应用PKCS#7签名机制,确保...
下面是一个简单的示例代码片段,用于展示如何从请求中获取X509证书,并打印出其主体名称和证书详情: ```java ;charset=GB2312" %> java.security.cert.X509Certificate[] certs = null; try { certs = (X509...
项目中的"pdfsign"可能是一个包含示例代码、配置文件或测试PDF的文件夹。开发者可以通过研究这些代码,理解如何使用iTextPDF和PDFBox进行PDF电子签名的实现。在Eclipse这样的IDE中运行这些示例,可以帮助快速掌握并...
5. **示例用法**:演示如何使用这些函数进行数字认证的示例代码。 在C#中实现数字认证,不仅有助于保护数据安全,还能防止中间人攻击,确保网络通信的完整性。通过深入理解并实践这样的程序,开发者可以提升在信息...