token的介绍和用python 生成token的几种方法

本文介绍了Token的基本概念和在身份验证中的作用,强调了其扩展性和安全性。详细阐述了基于Token的身份验证流程,并列举了Python中四种生成Token的方法,包括binascii.b2a_base64、sha1、uuid4().hex以及base64.b32encode,分析了各自的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >






基本概念


Token 的中文意思是“令牌”。主要用来身份验证。 FacebookTwitterGoogle+Github 等大型网站都在使用。比起传统的身份验证方法,Token 有扩展性强,安全性高的特点,非常适合用在 Web 应用或者移动应用上。


验证方法


使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:


1.       客户端使用用户名跟密码请求登录


2.       服务端收到请求,去验证用户名与密码


3.       验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端


4.       客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage


5.       客户端每次向服务端请求资源的时候需要带着服务端签发的 Token


6.       服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据


python常用Token生成方法


  1. binascii.b2a_base64(os.urandom(24))[:-1]


使用举例:


>>> import binascii


>>> import os


>>>binascii.b2a_base64(os.urandom(24))[:-1]


b'J1pJPotQJb6Ld+yBKDq8bqcJ71wXw+Xd'


这种算法的优点是性能快, 缺点是有特殊字符, 需要加replace 来做处理。


  1. sha1(os.urandom(24)).hexdigest()


使用举例:


>>> import hashlib


>>> import os


>>> hashlib.sha1(os.urandom(24)).hexdigest()


'21b7253943332d0237a720701bcb8161b82db776'


这种算法的优点是安全,不需要做特殊处理。缺点是覆盖范围差一些。


 


  1. uuid4().hex


使用举例:


>>> import os


>>> import uuid


>>> uuid.uuid4().hex


'c58a80d3b7864b0686757b95e9626e47'


Uuid使用起来比较方便, 缺点为安全性略差一些。


  1. base64.b32encode(os.urandom(20))/base64.b64encode(os.urandom(24))

    >>> import base64

    >>> import os

    >>>base64.b32encode(os.urandom(20))

    b'NJMTBMOYIXHNRATTOTVONT4BXJAC25TX'

    >>>base64.b64encode(os.urandom(24))

    b'l1eU6UzSlWsowm8M8lH5VaFhZEAQ4kQj'


特别说明:


1.   可以用base64的地方,选择 binascii.b2a_base64 是不错的选择 —— 根据W3SessionID的字串中对identifier的定义SessionID中使用的是base64,但在Cookie的值内使用需要注意“=”这个特殊字符的存在;


2.   如果要安全字符(字母数字),SHA1也是一个不错的选择,性能也不错;


 


 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值