如何使用UKEY中的数字证书验证用户身份?

timelight2000 2015-07-16 05:05:38
用户已经有了X.509数字证书,安装在USB KEY里。现在我想实现使用UKEY登录自己开发的应用程序,实现身份认证。
我想身份认证过程实际是用户证明自己拥有私钥的过程,大致可以用读到的公钥对某个信息加密,然后调用用户私钥解密,这个过程中UKEY驱动会自动接管调用私钥解密过程,确保私钥不出UKEY。
使用C#自带的库可以枚举用户的证书,并读出其中的内容。问题是这些操作并不需要用到私钥,也就不会用到用户的PIN码。光能读出这些只能证明用户在说他自己是谁,没法证明他就是。
那自己写的程序如何才能通过数字证书验证用户的身份呢?我感觉应该有标准机制来验证用户身份的吧?
期待示例代码。
...全文
1291 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Misleong 2019-05-22
  • 打赏
  • 举报
回复
请问现在还有这方面的代码,最近也在做Ukey验证
jianmoto 2016-03-01
  • 打赏
  • 举报
回复
最近我也在写一个这样的UKEY认证,能给我看看你怎么写的吗?
timelight2000 2015-08-03
  • 打赏
  • 举报
回复
问题已解决。初始化提示没有指定密钥集是因为默认是交换密钥,手工指定为签名密钥就好了。 这个方法不好,因为要找到具体的密钥容器需要读取注册表,使用默认容器的话要求电脑上只插了这一个UKEY。 相关代码: CspParameters csp = new CspParameters(1, ProviderName); csp.Flags = CspProviderFlags.UseDefaultKeyContainer; csp.KeyNumber = 2;//指定为签名密钥 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp); ...
timelight2000 2015-07-30
  • 打赏
  • 举报
回复
自己做。多数UKEY支持CSP接口。问题出来了,使用正确的CSP名称初始化provider时,提示密钥集不存在。但事实上初始化的时候根本没有指定密钥集。而有时候却可以成功。

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧