在 C# 中清除智能令牌的 Pin 缓存

Posted

技术标签:

【中文标题】在 C# 中清除智能令牌的 Pin 缓存【英文标题】:Clear Pin Cache for Smart Token in C# 【发布时间】:2021-05-04 07:25:32 【问题描述】:

我正在开发使用智能令牌进行签名和解密操作的 C# 应用程序 (.Net Framework)。我希望每次访问令牌时都提供引脚。我想清除 pin 缓存。

我尝试使用 Crypto API 中的 CryptSetProvParam 函数,但使用某些令牌模型失败。

[DllImport("Advapi32.dll", SetLastError = true)]
private static extern bool CryptSetProvParam(IntPtr hProv, uint dwParam, IntPtr pvData, uint dwFlags);

我也尝试在 Cryptography Next Generation API 中使用函数,但它根本不起作用。 有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

在 Windows 上,智能卡使用 CSP(加密服务提供商)。某些智能卡的 CSP 具有存储密码的选项。因此,如果用户选择了该选项,则用户可能必须删除该选项。我附上了 Hypersecu ePass2003 令牌管理器的示例屏幕截图 -> 设置。

【讨论】:

如何通过 C# 代码为不同的智能令牌模型执行此操作? 每个 CSP 都使用自己的设置(存储在 Windows 注册表中),因此没有通用方法(我知道)。可以在每次操作后使用 PKCS#11 并调用方法 c_Logout ,但这是依赖于驱动程序的方法。由于用户有意识地选择 Smartcard CSP (Manager) 中的选项来存储他的 PIN,应该不是什么大问题。【参考方案2】:

要在 NetCore 中缓存 - 分布式缓存,您可以查看此 Microsoft 文档Distributed Caching NetCore

您可以使用 Redis 来缓存和删除相应的令牌,请参阅此简短教程,了解如何立即开始在 NET Core 上使用 Redis。 how to get started with Redis on NET Core in no time.

【讨论】:

感谢您的回答,但这不是我要寻找的。我需要清除密码操作中使用的智能令牌的 pin 缓存

以上是关于在 C# 中清除智能令牌的 Pin 缓存的主要内容,如果未能解决你的问题,请参考以下文章

C# WebBrowser 控件:清除缓存而不清除 cookie

C#强制清除缓存

如何以编程方式清除缓存?

c# IE 清除缓存

C#:如何实现智能缓存

C# 通过调用Win32 API函数清除浏览器缓存和cookie