Python生成SessionID

强烈推荐使用Python内置库secrets




1. 利用MD5

import time
from hashlib import md5
session = md5(str(time.time()).encode('utf-8'))
session = session.hexdigest()
print(session)

结果:利用时间戳产生的MD5,如0026fcb876ff6bed4b391df819240c6f
耗时:54.6 µs ± 554 ns
缺点:可暴力破解,高并发时重复率高




2. 利用SHA1

import os
from hashlib import sha1
session = sha1(str(time.time()).encode('utf-8'))
session = session.hexdigest()
print(session)

结果:利用时间戳产生的SHA1,如568ecfe658cc7ce16fd91ac2e03e4afe62f6b4f2
耗时:55.6 µs ± 1.33 µs
缺点:可暴力破解,高并发时重复率高




3. 利用UUID

from uuid import uuid4
session = uuid4()
print(session)

结果:利用随机产生的UUID,如6456bffb-f97a-4d8a-b0a6-c611183aff1b
耗时:60.3 µs ± 1.16 µs
缺点:安全性不足




4. 利用内置库secrets

import secrets
session = secrets.token_urlsafe(16)
print(session)

结果:利用内置库secrets产生的安全令牌,如rnH0Q-SvPNrV7hULW-EDmQ
耗时:52.7 µs ± 858 ns
缺点:Python 3.6及以上可用




参考文献

  1. Unique session id in python - Stack Overflow
  2. secrets — Generate secure random numbers for managing secrets — Python 3.8.2 documentation
  3. M2Crypto安装
  4. 【解决方案】M2Crypto不支持python3
  5. PEP 506 – Adding A Secrets Module To The Standard Library
发布了248 篇原创文章 · 获赞 89 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/lly1122334/article/details/104794160
今日推荐