hash函数:

一般翻译为“散列”或“哈希”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值唯一来唯一的确定输入值(这也是应用hash函数时需要注意避免的)。简单来说,就是将任意长度的消息压缩到某一固定长度的消息摘要的函数。

1.特征:被hash的值不变,对应hash的值一定是不变的。(hash的值的计算过程是依据这个值的一些特征计算的,这就要求hash的值必须固定,因此被hash的值是不可变的。)

不可变:数字,字符串,元组;可变:列表。

>>> hash('alex')
-7043802833819298431
>>> hash('alex')
-7043802833819298431
>>> hash('alexx')
4559968772027997698

  2.用途:文件签名(加一个文件签名,确认文件没有被篡改),md5加密(例如,你输入的密码通过md5加密后放入数据库,因为md5不能反解,所以工程师是不可能知道你的密码的),密码验证。

Python全栈之路----hash函数的更多相关文章

  1. Python全栈之路----目录

    Module1 Python基本语法 Python全栈之路----编程基本情况介绍 Python全栈之路----常用数据类型--集合 Module2 数据类型.字符编码.文件操作 Python全栈之路 ...

  2. Python全栈之路----常用模块----hashlib加密模块

    加密算法介绍 HASH       Python全栈之路----hash函数 Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列 ...

  3. Python全栈之路目录结构

    基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...

  4. python 全栈之路

    目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文 ...

  5. python全栈开发 生成器 :生成器函数,推导式及生成器表达式

    python 全栈开发 1.生成器函数 2.推导式 3.生成器表达式 一.生成器函数 1.生成器: 生成器的本质就是迭代器 (1)生成器的特点和迭代器一样.取值方式和迭代器一样(__next__(), ...

  6. python全栈开发之匿名函数和递归函数

    python 匿名函数和递归函数 python全栈开发,匿名函数,递归函数 匿名函数 lambda函数也叫匿名函数,即函数没有具体的名称.是为了解决一些功能很简单需求而设计的一句话函数.如下: #这段 ...

  7. Python全栈之路----函数----返回值

    函数外部的代码想要获取函数的执行结果,就可以在函数里用return语句,把结果返回. def stu_register(name,age,course='PY',country='CN'): prin ...

  8. Python全栈之路4--内置函数--文件操作

    上节重点回顾: 判断对象是否属于某个类,例如: 列表中有个数字,但是循环列表判断长度,用len会报错;因为int不支持len,所以要先判断属于某个类,然后再进行if判断. # isinstance(对 ...

  9. Python全栈之路----函数----内置方法

    Built-in Functions abs() dict() help() min() setattr() all() dir() hex() next() slice() any() divmod ...

随机推荐

  1. UVA11235 Frequent values

    思路 连续的值只会分布在一起成一个块 讨论两边的块,中间就是RMQ了 ST表即可 代码 #include <cstdio> #include <algorithm> #incl ...

  2. 如何恢复IIS出厂默认设置

    How to restore IIS settings and Default Web Site? http://superuser.com/questions/704850/how-to-resto ...

  3. 在 Linux 上使用 VirtualBox 的命令行管理界面

    VirtualBox 拥有一套命令行工具,你可以使用 VirtualBox 的命令行界面 (CLI) 对远程无界面的服务器上的虚拟机进行管理操作.在这篇教程中,你将会学到如何在没有 GUI 的情况下使 ...

  4. Resnet-34框架

    import torch import torch.nn as nn import torch.nn.functional as F class ResidualBlock(nn.Module): ' ...

  5. ubuntu文档保存出现的一些错误

    ubuntu使用vim编辑器保存时,出现了错误,虽然知道基本的保存方法,但是还不够,出现各种错误.基本的保存命令: 写入文件后退出保存:wq后,保存时出现错误E45:已设定选项“readonly”(请 ...

  6. java泛型的理解

    总体介绍泛型: 1.泛型是计算机程序中一种重要的思维方式,它将数据结构和算法与数据类型相分离,使得同一套数据结构和算法,能够应用于各种数据类型,而且还可以保证类型安全,提高可读性.在Java中,泛型广 ...

  7. PPT设计灵感功能

    最近老师让我们做PPT,我用的是power point是office365加强版.我发现如果想平常那样直接做的话排版太死板了,不好看.我当时想:管他呢,先做出来再说.刚输完标题,放了几张图片进去右边就 ...

  8. Ubuntu18.04 搭建zookeeper单机版集群

    一台电脑启动三个虚拟机比较折腾,这里就用一台虚拟机模拟一下zk集群. 1.后台下载安装包到 /opt目录 sudo wget -b http://archive.apache.org/dist/zoo ...

  9. js 面试知识点

    基础           原型  原型链 作用域  闭包 异步  单线程 JS API        DOM操作 AJAX 事件绑定 开发环境    版本管理 模块化 打包工具 运行环境    页面渲 ...

  10. Spring boot 启动报错 Failed to auto-configure a DataSource

    1.Spring boot 启动报错 Failed to auto-configure a DataSource 参考资料https://blog.csdn.net/liuyinfei_java/ar ...