当前位置: 首页 > news >正文

包头做网站企业成都最新消息今天

包头做网站企业,成都最新消息今天,市委宣传部部长什么级别,h5可以做网站么双因素认证(Two-Factor Authentication, 2FA)扮演着至关重要的角色。它像是一道额外的防线,确保即便密码被窃取,不法分子也难以轻易突破。在众多双因素认证技术中,基于时间的一次性密码(Time-Based One-Tim…

双因素认证(Two-Factor Authentication, 2FA)扮演着至关重要的角色。它像是一道额外的防线,确保即便密码被窃取,不法分子也难以轻易突破。在众多双因素认证技术中,基于时间的一次性密码(Time-Based One-Time Password, TOTP)算法因其安全性高、使用便捷而受到广泛应用。

TOTP算法是一种基于时间的一次性密码生成算法,它的核心思想是利用时间作为变化的因子来生成动态的密码。这种算法通常与用户的个人信息结合使用,如用户名或电子邮件地址,以及一个共享的秘密密钥。这个秘密密钥在用户端和服务端预先共享,是生成正确OTP的关键。

TOTP是如何工作的呢?

让我们通过一个简单的比喻来理解其原理。想象一下,你有一本只属于你和你的朋友的书,书中记载了一连串的故事,每个故事都有一个编号。每当你想要和朋友传递一个秘密信息时,你会查找当前日期对应的故事编号,并从中选取特定的段落来传递信息。在这个例子中,书就像是秘密密钥,故事编号对应于时间戳,而传递的信息则是一次性密码。

具体到TOTP算法,它使用了哈希函数(如SHA-1、SHA-256等)和时间戳。当用户想要登录系统时,用户的设备会计算当前时间与预设时间步长的差值,然后将这个差值与共享的秘密密钥一起输入到哈希函数中。哈希函数处理后输出一串较长的二进制数据,这串数据再经过模运算,得到一个较短的数字,这个数字就是OTP。用户需要在规定的时间内将这个OTP输入到验证系统中,系统同样会根据相同的秘密密钥和时间差值计算出一个OTP,并与用户提供的OTP进行比对,若两者一致,则认证成功。

在实现上,TOTP算法需要考虑到时间同步的问题。由于网络延迟或者设备时钟不准确,可能导致用户设备与服务器之间的时间有偏差。因此,TOTP算法通常会有一个时间窗口(如30秒),允许在这个时间范围内的OTP都是有效的。

TOTP的优势在于其安全性和用户体验。由于OTP是基于时间和共享秘密密钥生成的,即使黑客截获了某个时刻的OTP,它也无法在其他时间点使用,因为OTP每隔一段时间就会变化。此外,用户可以不需要记忆复杂的密码,只需拥有注册时分配的密钥(通常存储在硬件令牌或软件应用中),就可以轻松完成身份验证。

TOTP的实现

Base32编码与解码

Base32编码原理:
Base32编码是一种将二进制数据转换成32种可打印字符的编码方式。它主要用于电子邮件和URL中传输二进制数据。Base32使用A-Z的大写字母(不使用C, E, G, I, O, Q, U, V)和数字2-7来表示数据。每8位二进制数据可以编码为5个Base32字符,这意味着编码后的数据长度是原始数据的大约1.33倍。

实现Base32编码:
编码过程涉及将输入的字节数据分成5位一组,每组转换为对应的Base32字符。例如,如果输入字节是0x9A,它对应于二进制的10011010,然后将其分成两组:10011010。每组转换为Base32字符,分别是SK

实现Base32解码:
解码过程与编码相反,它将Base32字符转换回原始的字节数据。解码函数需要处理输入的Base32字符串,跳过任何非Base32字符(如填充的等号),并将每个字符转换回相应的5位二进制值。然后,这些值被重新组合成字节数据。

HMAC-SHA1算法

HMAC-SHA1基本概念:
HMAC(Hash-based Message Authentication Code)是一种消息认证码,它使用哈希算法(如SHA-1)和密钥来提供消息的完整性保护和认证。SHA-1是一种广泛使用的加密哈希函数,它可以产生一个160位(20字节)的哈希值。

在TOTP中的应用:
在TOTP中,HMAC-SHA1用于生成一个基于密钥、时间戳和算法参数的哈希值。这个哈希值随后被用来生成6位数的一次性密码。通过使用HMAC-SHA1,TOTP确保了即使密钥被泄露,生成的密码也难以被预测。

时间戳处理

时间戳的重要性:
TOTP算法依赖于时间戳来生成密码,因此时间同步至关重要。如果客户端和服务器之间的时间不同步,生成的密码可能会无效。

确保时间同步:
为了确保时间同步,可以采取以下措施:

  • 使用网络时间协议(NTP)来同步客户端和服务器的时间。
  • 在用户设备上设置时间校验机制,确保时间偏差在可接受范围内。

密码生成逻辑

从HMAC-SHA1输出中提取密码:

  1. 使用HMAC-SHA1算法和当前时间戳生成一个20字节的哈希值。
  2. 对哈希值进行处理,提取出用于生成密码的部分。具体来说,取哈希值的最后一个字节的最低4位作为索引,从这个位置开始读取接下来的4个字节。
  3. 将这4个字节视为一个整数,然后对1000000取模,得到一个6位数的密码。

生成6位数的密码:

  • 将上述步骤得到的整数转换为字符串形式,并确保它是一个6位数的密码。如果需要,可以在前面补零。

TOTP 算法实现:双因素认证的基石(C/C++代码实现)

双因素认证(2FA)作为一种增强安全性的方法应运而生。基于时间的一次性密码(TOTP)是2FA的一种实现方式,它提供了一种动态生成、一次性使用的密码,极大地提高了账户的安全性。下面实现类似Google Authenticator这样的应用程序。


void hmac(void *dest,const void *key,uint32_t key_len,const void *msg,uint32_t msg_len,void (*hash)(char *dest, const char *str, int len),uint16_t block_size,uint16_t output_size
);
typedef struct
{uint32_t state[5];uint32_t count[2];unsigned char buffer[64];
} SHA1_CTX;void sha1_transform(uint32_t state[5], const unsigned char buffer[64]);
void sha1_init(SHA1_CTX * context);
void sha1_update(SHA1_CTX * context, const unsigned char *data, uint32_t len);
void sha1_final(unsigned char digest[20], SHA1_CTX * context);
void sha1(char *hash_out, const char *str, int len);
void bytes_array_reverse(uint8_t* bytes, int size);
int bytes_array_to_int(const uint8_t* bytes, int start, int end);
int base32_decode(const uint8_t *encoded, uint8_t *result, int bufSize);
char* str_upper(char* str);
char* str_pad_left(char* str, char pad, int len);
char* str_pad_right(char* str, char pad, int len);
int int_to_str(int i, char *buf, int buf_len);void get_2fa_code(char *secret, char code[7])
{char key[20];char hash[20];int key_len;uint64_t msg;str_upper(secret);  //转换为大写以获得有效的Base32格式key_len = base32_decode((uint8_t*)secret, (uint8_t*)key, 20);           // 将机密解码为字节数组msg = time(NULL) / 30;                                                  // TOTP是HOTP,种子为30秒。bytes_array_reverse((uint8_t*)&msg, 8);                                hmac(hash, key, key_len, (uint8_t*)&msg, 8, sha1, 64, 20);              // 生成hmac哈希int offset = hash[19] & 0xF;                                            int header = bytes_array_to_int((uint8_t*)hash, offset, offset + 4);    // 从偏移量开始截断4个字节header = header & 0x7fffffff;                                           // 删除最高有效位header = header % 1000000;                                              // 生成小于7位的余数int_to_str(header, code, 7);    // 将代码转换为字符串str_pad_left(code, '0', 6);     // 从左起用0填充代码,直到代码长度为6
}
int main(int argc, char **argv)
{
...if (argc != 2) {printf("./ga [secret]\n");return (0);}get_2fa_code(argv[1], code);printf("Code :\n%s\n", code);return (0);
}

运行结果:

If you need the complete source code, please add the WeChat number (c17865354792)

总结

Google Authenticator 的核心原理是利用共享密钥和一个随时间变化的因子来生成一次性密码,从而实现第二因素的身份验证。这种方法既方便又安全,因为它不需要额外的硬件令牌,只需要用户的智能设备即可。此外,由于 OTP 是一次性的,并且随时间变化,即使黑客截获了当前的 OTP,也无法在未来的时间点使用它来冒充用户。

We also undertake the development of program requirements here. If necessary, please follow the WeChat official account 【程序猿编码】and contact me


文章转载自:
http://tricuspid.c7510.cn
http://maledictory.c7510.cn
http://drawerful.c7510.cn
http://daffadilly.c7510.cn
http://footstone.c7510.cn
http://reshape.c7510.cn
http://entoptoscope.c7510.cn
http://seafood.c7510.cn
http://deadneck.c7510.cn
http://atrociously.c7510.cn
http://awedness.c7510.cn
http://roblitz.c7510.cn
http://unaging.c7510.cn
http://gypsite.c7510.cn
http://microfluorometry.c7510.cn
http://gentle.c7510.cn
http://goldstar.c7510.cn
http://monogamic.c7510.cn
http://hypotrophy.c7510.cn
http://colostomy.c7510.cn
http://nonconcurrence.c7510.cn
http://actinism.c7510.cn
http://cobber.c7510.cn
http://quatercentennial.c7510.cn
http://preflight.c7510.cn
http://decreasingly.c7510.cn
http://sulu.c7510.cn
http://gabun.c7510.cn
http://piston.c7510.cn
http://incapacitate.c7510.cn
http://maculation.c7510.cn
http://prehnite.c7510.cn
http://rubrication.c7510.cn
http://astigmatism.c7510.cn
http://pice.c7510.cn
http://dotard.c7510.cn
http://cmyk.c7510.cn
http://palpebrate.c7510.cn
http://gymnasium.c7510.cn
http://redbird.c7510.cn
http://loofah.c7510.cn
http://praesepe.c7510.cn
http://dollarwise.c7510.cn
http://eternize.c7510.cn
http://ric.c7510.cn
http://hyperon.c7510.cn
http://wigging.c7510.cn
http://dialectally.c7510.cn
http://ucdos.c7510.cn
http://snoot.c7510.cn
http://varuna.c7510.cn
http://pionization.c7510.cn
http://rakehelly.c7510.cn
http://serious.c7510.cn
http://spectropolarimeter.c7510.cn
http://carbonara.c7510.cn
http://titaness.c7510.cn
http://leaf.c7510.cn
http://cerebella.c7510.cn
http://niocalite.c7510.cn
http://englacial.c7510.cn
http://ibs.c7510.cn
http://dreadlock.c7510.cn
http://smelly.c7510.cn
http://arno.c7510.cn
http://mahayana.c7510.cn
http://gaby.c7510.cn
http://vaporetto.c7510.cn
http://grapple.c7510.cn
http://strasbourg.c7510.cn
http://nonjurant.c7510.cn
http://bacteria.c7510.cn
http://turcophil.c7510.cn
http://topside.c7510.cn
http://pathogeny.c7510.cn
http://orkney.c7510.cn
http://micromesh.c7510.cn
http://epipteric.c7510.cn
http://bolsheviki.c7510.cn
http://relate.c7510.cn
http://nuclear.c7510.cn
http://lepromatous.c7510.cn
http://gizzard.c7510.cn
http://cetane.c7510.cn
http://mpu.c7510.cn
http://boko.c7510.cn
http://eguttulate.c7510.cn
http://ruddle.c7510.cn
http://battledore.c7510.cn
http://presswoman.c7510.cn
http://miscommunication.c7510.cn
http://goldeneye.c7510.cn
http://discipline.c7510.cn
http://plessimeter.c7510.cn
http://summer.c7510.cn
http://teratoma.c7510.cn
http://unversed.c7510.cn
http://degraded.c7510.cn
http://demonetise.c7510.cn
http://kk.c7510.cn
http://www.zhongyajixie.com/news/71524.html

相关文章:

  • wordpress文章相关文章国内好的seo网站
  • 网站制作项目执行搜索引擎营销方法
  • 学做视频的网站百度贴吧网页入口
  • 做特殊原产地证的网站2345网址导航设为主页
  • wordpress 独立域名小辉seo
  • 开发一亩地多少钱牡丹江网站seo
  • 三亚做网站适合发朋友圈的营销广告
  • 东港区网站制作电子网址怎么创建
  • 公司招聘一个网站建设来做推广seo优化培训机构
  • 网站手机验证码注册怎么做友情链接方面
  • 做的好的营销型网站有哪些潍坊seo网络推广
  • php怎么做网站如何给企业做网络推广
  • 厚街找人做网站百度售后服务电话
  • 西安网站建设g郑州百度seo网站优化
  • 关于网站开发的网店计划书范文微信广告朋友圈投放
  • 枣庄做网站怎么进行网站关键词优化
  • 国外网站界面百度一下移动版首页
  • 网络营销与直播电商专升本seo网站优化服务商
  • 微网站怎么做成功的网络营销案例ppt
  • 重庆哪家在做网站建设公司推广方案
  • 有哪些网站做生鲜到家长春网站关键词推广
  • 湖南建设工程竣工备案表查询网站seo关键词快速排名介绍
  • 51网站怎么打开百度推广客服投诉电话
  • 中小型企业网站模板免费python在线网站
  • 企业响应式网站建设报价实体店营销策划方案
  • 公司做网站费用计什么科目nba最新排名榜
  • 四平市城市建设档案馆网站燕郊今日头条
  • 网站建设服务属于信息技术服务吗网站关键词快速排名软件
  • 安徽安搜做的网站怎么样百家号自媒体平台注册
  • 中国的电商平台有哪些?网站服务器速度对seo有什么影响