有一种常见加密的方式,就是使用动态的密码进行登录。这样保密性会提高很多。动态密码,实际上是先将普通密码加密再加上一段会变化的数据(比如时间)再进行一次加密。这样大家每次获得的密码部分都是不同的。这就是动态密码的大致含义。Python代码示例如下:
import hmac, os
from datetime import datetime
def create_pwd():
# 获取当前UTC时间
time_str = datetime.utcnow().strftime('%Y-%m-%d%H:%M:%S')
print(time_str)
# k共享密钥(令牌种子)
# 这k的值影响到你计算出来的密码结果,与'md5'、'SHA512'这些有关,想了解请自行百度
k = '3123558694032490123'
# string -> bytes
b_k = bytes(k, encoding='utf-8')
b_t = bytes(time_str, encoding='utf-8')
# 加密算法
digestmod = 'MD5'
h = hmac.new(b_k, b_t, digestmod)
# 返回的16进制摘取6位
hex_final = str(h.hexdigest())[0:6]
# 转为10进制,这是只截取前6位
final = str(int(hex_final.upper(), 16))[0:6]
print(final)
if __name__=='__main__':
create_pwd()
动态密码: 相同的密码明文, 加密后每次发送到服务器,密码都不同,即时间戳密码。时间间隔越小,密码安全性越高,这里我们可以将时间戳的时间设置为秒级,这样由于每秒的时间都在变化,得出的动态密码也在变化。一般常见的是设置为分钟级,即密码有1分钟(60秒)的有效期,方便用户有时间进行输入,从而后台进行匹配。
Python结果如下:
发表评论 取消回复