有人知道我在哪里可以找到带有 system.security.cryptography 命名空间的示例代码——或者开发人员可以遵循的说明吗?
目的是向 ASP.NET 网站添加双因素身份验证。在网站上,我想要求用户输入密码(类似于他们从密钥卡获取密码)。在客户端,我想提供一个生成正确密码的 vb.net windows.forms 程序。
我想用 system.security.cryptography 命名空间小规模地执行此操作。我正在寻找示例代码,我不想弄乱设备或购买身份验证服务器设备。
大多数算法都需要高级数学学位,或者适用于 Linux 或 PHP 等其他平台。我正在寻找 .net 的等效项。
的加密部分RFC4226 http://www.ietf.org/rfc/rfc4226.txt(基于计数器的 OTP)或基于时间的 mraihi-totp 草案 https://datatracker.ietf.org/doc/html/draft-mraihi-totp-timebased(基于时间的 OTP)相对简单:
- 根据共享密钥和计数器/时间生成 HMAC
- 以安全的方式截断它
通常是用户管理和静态/动态同步使其变得复杂。
像这样的东西应该有效:
public static int CalculateHotp(byte[] key, byte[] counter)
{
var hmacsha1 = new HMACSHA1(key);
byte[] hmac_result = hmacsha1.ComputeHash(counter);
int offset = hmac_result[19] & 0x0f;
int bin_code = (hmac_result[offset] & 0x7f) << 24
| (hmac_result[offset+1] & 0xff) << 16
| (hmac_result[offset+2] & 0xff) << 8
| (hmac_result[offset+3] & 0xff);
int hotp = bin_code % 1000000;
return hotp;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)