python学习之路—自动生成唯一标识(md5加密方式)
前言
在python存入数据库时,如果数据库的主键不是自增方式,那么我们可能需要自己生成一个唯一标识符,现在最好的方法就是md5加密生成的32位作为主键,本文将会介绍python的两种自动生成唯一标识的方式。
python MD5加密方法
在介绍方式之前先了解一下python如何对数据进行md5加密
依赖包 :
import hashlib
用法:
def md5(string):# 对要加密的字符串进行指定编码string = string.encode(encoding ='UTF-8')# md5加密print(hashlib.md5(string))# 将md5 加密结果转字符串显示string = hashlib.md5(string).hexdigest()
方法一:
依赖包:
import uuid
用法:
# 获取唯一加密值,uuid1 根据主机mac地址和时间戳生成全球唯一加密值唯一缺点会暴露mac地址 id = uuid.uuid1() #将生成的加密值去除-获得32位加密值 id = id.replace('-','')
知识点
uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现。有时也称guid(global unique identifier)。python中自带了uuid模块来进行uuid的生成和管理工作。
python中的uuid模块基于信息如MAC地址、时间戳、命名空间、随机数、伪随机数来uuid。具体方法有如下几个:
uuid.uuid1() 基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性,缺点会暴露mac地址。
uuid.uuid2() 算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。不过需要注意的是python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法。
uuid.uuid3(namespace,name) 通过计算一个命名空间和名字的md5散列值来给出一个uuid
uuid.uuid4() 通过伪随机数得到uuid,是有一定概率重复的
uuid.uuid5(namespace,name) 和uuid3基本相同,只不过采用的散列算法是sha1
---------------------
参考文档:https://www.cnblogs.com/hellojesson/p/6410445.html
https://www.cnblogs.com/franknihao/p/7307224.html
方法二:
依赖包:
import hashlib import os
用法:
//利用os随机生成26个字符 然后对其md5加密
id = hashlib.md5(os.urandom(26)).hexdigest()
知识点:
os.urandom(n)函数
函数定位: Return a string of n random bytes suitable for cryptographic use.
意思就是,返回一个有n个byte那么长的一个string
在文档中,被归结于os这个库的Miscellaneous Functions,意思是不同种类的函数(也可以说是混种函数)
原因是: This function returns random bytes from an OS-specific randomness source. (函数返回的随机字节是根据不同的操作系统特定的随机函数资源。即,这个函数是调用OS内部自带的随机函数的。有特异性)
---------------------
参考文档:https://blog.csdn.net/a19990412/article/details/80934268
python学习之路—自动生成唯一标识(md5加密方式)相关推荐
- python namespace unique_Python使用uuid库生成唯一标识ID
uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现.有时也称guid(global unique identifier). ...
- Python学习之路9☞面向对象的程序设计
Python学习之路9☞面向对象的程序设计 一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什 ...
- python list转字符串_我用python写了个自动生成给文档生成索引的脚本!懒人智慧...
我用 python 写了一个自动生成索引的脚本 简介:为了刷算法题,建了一个 GitHub仓库: PiperLiu / ACMOI_Journey ,记录自己的刷题轨迹,并总结一下方法.心得.想到一个 ...
- Python学习之路—2018/6/20
Python学习之路-2018/6/20 1.模板语法之变量 views.py def index(request):import datetimes="gyq"l=[1,2,3] ...
- python图书馆管理系统实验报告_基于Python的图书馆业务报表自动生成研究
龙源期刊网 http://www.qikan.com.cn 基于 Python 的图书馆业务报表自动生成研 究 作者:辛海滨 来源:<电脑知识与技术> 2016 年第 27 期 摘要:针对 ...
- Vue中使用uuidv1根据时间戳和MAC地址生成唯一标识
场景 若依前后端分离版手把手教你本地搭建环境并运行项目: 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客_若依前后端分离搭建 在上面搭建起来Vue项目的基础上,怎样 ...
- 「懒惰的美德」我用 python 写了个自动生成给文档生成索引的脚本
我用 python 写了一个自动生成索引的脚本 简介:为了刷算法题,建了一个 GitHub仓库:PiperLiu / ACMOI_Journey,记录自己的刷题轨迹,并总结一下方法.心得.想到一个需求 ...
- 我的Python学习之路(一)_Mr_Ouyang
我的Python学习之路(一)_Mr_Ouyang 笔者按: 本文从18:55开始写作,至19:38中断,又从21:12始继续,至23:22写就. 共计耗时113分钟,总字数9081字,约80.4字/ ...
- Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)
系列教程: Python 自动化教程(1) 概述,第一篇 Excel自动化 Python 自动化教程(2) : Excel自动化:使用pandas库 Python 自动化教程(3) : 自动生成PPT ...
最新文章
- 干货 | 45张图庖丁解牛18种Queue,你知道几种?
- 使用ajaxfileupload.js实现文件上传
- sqlyog设置自动补全_sqlyog智能提示如何设置?sqlyog智能提示设置流程介绍
- linux安装软件方法汇总
- SQL SERVER 2008的GEOMETRY类型
- 用jQuery做点击下箭头改变方向
- YYYY-mm-dd HH:MM:SS大小写解释
- switchhost使用与注意事项
- 厦门大学计算机调剂要求,厦门大学调剂公告
- uni-app微信公众号(1)——网页授权登录
- 用@ExceptionHandler 来进行异常处理
- 【Linux】time+dd测试硬盘读写速度
- Modelsim的使用方法
- android_图片转视频_image2video
- ArrayList删除元素的细则
- Codeforces Round #818 (Div. 2)
- 一台计算机怎么弄2个登录桌面,一台主机两个显示器 教您电脑两个显示器怎么设置 - 云骑士一键重装系统...
- 老主板并口安装串口硬盘总攻略!~
- R语言实现LDA算法(鸢尾花)
- OSError: [WinError 216] 该版本的 %1 与您运行的 Windows 版本不兼容。
热门文章
- web.xml文件中classpath路径指的哪个路径
- 微信小程序常用文档地址(自用常更新)
- PT8020(十触控 IIC 输出 IC)
- 微服务框架 SpringCloud微服务架构 服务异步通讯 51 死信交换机 51.3 延迟队列 51.3.1 延迟队列 51.3.2 延迟队列插件
- 全栈工程师到底有什么用
- 自媒体运营4个超实用的网站,速速收藏起来
- 智能电视 android,智能电视:Android真的是期盼已久的免费午餐?
- 哈工大软件构造实验一
- metasploit - nops
- 关于c++ find返回值类型 与string::nops的使用的若干问题