惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
博客园 - 【当耐特】
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
阮一峰的网络日志
阮一峰的网络日志
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
爱范儿
爱范儿
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
S
SegmentFault 最新的问题
博客园 - Franky
博客园_首页
T
Tailwind CSS Blog
雷峰网
雷峰网
罗磊的独立博客

博客园 - 木头's

.Net读取数字证书信息和扩展域信息 APACHE2.0 TOMCAT5.0 SSL 配置 smimedecryptvbs ASP.NET, Javascript tips: Encrypt /Sign /Verify signed message using Capicom ActiveX Using CAPICOM to obtain an SSL Certificate .NET and Certificate Stores java数字签名(签名生成,用证书验证签名) Apache安全应用资源文档 国外PKI/CA体系发展状况 CA基本常识:X.509标准 - 木头's - 博客园 PKI体系的十大风险 在职必看!受益无穷的28条职场语录 启用客户端证书并在 SharePoint Portal Server 2003 的内容搜索中使用客户端证书 一个基于RSA算法的Java数字签名例子 实现在 Linux 下 Tomcat 的双向SSL认证 JAVA对数字证书的常用操作 一组数据摘要算法的效率测试 一首歌曲,一种心情 职场必读
net平台下的数字签名技术的讲解
木头's · 2007-08-16 · via 博客园 - 木头's

Posted on 2007-08-16 16:59  木头's  阅读(821)  评论()    收藏  举报

CAPICOM中的重要对象如下,会用到,而且也只用到这些:
CAPICOM.Store //证书库对象
CAPICOM.Certificates //证书集合对象
CAPICOM.Certificate//单个证书对象
CAPICOM.Signer //签名者对象
CAPICOM.SignedData (重中之重)//签名后的数据
由于签名是在客户端完成的,所以,只能用客户端脚本来写(以VBSCRIPT为例):
Set oStore =CreateObject("CAPICOM.Store")
oStore.Open CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_ONLY Or CAPICOM_STORE_OPEN_EXISTING_ONLY
//打开本地的证书库,参数意义不再详解
Set oStoreCerts = CreateObject("CAPICOM.Certificates")
Set oStoreCerts =oStore.Certificates
oStoreCerts.Find(CAPICOM_CERTIFICA
TE_FIND_KEY_USAGE,
CAPICOM_DIGITAL_SIGNATURE_KEY_
USAGE, True) //把本地的证书库中的证书放到一个证书链
Set oCert = CreateObject("CAPICOM.Certificate")
Set oCerts =CreateObject("CAPICOM.Certificates")
For each oCert in oStoreCerts
if Len (oCert.GetInfo ( CAPICOM_CERT_INFO_SUBJECT_EMAIL_NAME )) > 0
Then
oCerts.Add oCert
End if
Next //找到有效的证书放到另一个证书链对象中
set oSignerCert = CreateObject("CAPICOM.Certificate")
if oCerts.Count = 1 Then
Set oSignerCert = oCerts(1)
else
set oSelects = CreateObject("CAPICOM.Certificates")
set oSelects =oCerts.Select()
Set oSignerCert= oSelects(1)
//得到用户所选择的证书,如果有多个有效证书,会弹出对话框让用户选择
Set oSigner = CreateObject("CAPICOM.Signer")
oSigner.Certificate = oSignerCert
//指定签名者,并指定签名者的所用来签名的证书
Set oSignedData = CreateObject("CAPICOM.SignedData")
oSignedData.Content = DataNeedSign(需要签名的数据)
//定义签名数据对象,并指定要被签名的数据。至于DataNeedSign的内容是什么,
自己根据情况而定。
SignedResult(被签名后的数据)=oSignedData.Sign( oSigner )
//签名就完成了,SignedResult与 DataNeedSign同时发给另一方。
现在,如果B方收到SignedResult与 DataNeedSign
CAPICOM.SignedData s = new CAPICOM.SignedDataClass();
s.Verify(Information,false,CAPICOM.CAPICOM_SIGNED_
DATA_VERIFY_FLAG.CAPICOM_
VERIFY_SIGNATURE_AND_CERT
IFICATE);//身份认证。
If(s.Content==DataNeedSign)
提示数据完整!//完整性确定
//假设B方在我们的平台上验证的(缺点:万一下载数据时被改就无法控制,但是由于某些原因,只能做到这一步,如果要到了B的客户端验证,也可以。只是脚本会变一点。)