哈希算法

哈希算法

哈希算法:

把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。

简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

python中用于获取一个对象(字符串/数字)的哈希值

1 >>>hash('test')            # 字符串
2 2314058222102390712
3 >>> hash(1)                 # 数字
4 1
5 >>> hash(str([1,2,3]))      # 集合
6 1335416675971793195
7 >>> hash(str(sorted({'1':1}))) # 字典
8 7666464346782421378
9 >>>

在 hash() 对对象使用时,所得的结果不仅和对象的内容有关,还和对象的 id(),也就是内存地址有关。

 1 class Test:
 2     def __init__(self, i):
 3         self.i = i
 4 for i in range(10):
 5     t = Test(1)
 6     print(hash(t), id(t))
 7 #输出结果
 8 (277855628, 4445690048)
 9 (277855637, 4445690192)
10 (277855628, 4445690048)
11 (277855637, 4445690192)
12 (277855628, 4445690048)
13 (277855637, 4445690192)
14 (277855628, 4445690048)
15 (277855637, 4445690192)
16 (277855628, 4445690048)
17 (277855637, 4445690192)

一种用途:

hash() 函数的对象字符不管有多长,返回的 hash 值都是固定长度的,也用于校验程序在传输过程中是否被第三方(木马)修改,

如果程序(字符)在传输过程中被修改hash值即发生变化,如果没有被修改,则 hash 值和原始的 hash 值吻合,

只要验证 hash 值是否匹配即可验证程序是否带木马(病毒)。

1 name1='正常程序代码'
2 name2='正常程序代码带病毒'
3 print(hash(name1)) # 2403189487915500087
4 print(hash(name2)) # -8751655075885266653

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2770.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 开源视频会议BigBlueButton 0.81二次开发API

    开源视频会议BigBlueButton 0.81二次开发API开源视频会议BigBlueButton0.81二次开发API本文是copy一位博友的,为了不丢失这篇文章,谢谢。BigBlueButton是一个视频会议软件,它的演示环境和开发环境的搭建,网上都有很多的资料,为了便于二次开发,我整理了一下BBB的常用功能API接口,供参考:BigblueButton调用API,只需一个HTTP请求一个URL,查询参数提供呼叫所需要的信

  • vue.js跨域_vueaxios跨域请求

    vue.js跨域_vueaxios跨域请求最近公司能的项目使用前后端分离,前端开发请求接口数据的时候碰到了跨域问题,解决方案如下一、SimpleCORSFilter工具类在项目Util类中新建类SimpleCORSFilter实现Filter接口packagecom.how2java.tmall.util;importjava.io.IOException;importjavax.servlet.Filter…

  • 微信小程序页面收录推送

    微信小程序页面收录推送

    2021年11月11日
  • 【PMP】PMBOK第六版项目管理5大过程组10大知识领域知识点汇总

    前后准备考试,历时一个月时间,最终完美pass第一章项目管理框架第二章、项目运行环境第三章项目经理的角色第四章、项目整合管理第五章项目范围管理第六章项目进度管理第七章项目成本管理第八章、项目质量管理第九章、项目资源管理第十章项目沟通管理第十一章项目风险管理第十二章、项目采购管理第十三章、项目相关方管理必须记住的知识点:规划成…

  • 修改select下拉菜单样式(input下拉框select)

    自带的select下拉菜单美观度实在不怎么样,并且不容易美化,当然我们可以模拟实现select下拉菜单,但是代码稍显复杂,不过也可以通过简单的CSS实现此效果,下面通过实例简单作一下介绍。代码如下:<!DOCTYPEhtml><html><head><metacharset=”utf-8″><metaname=”autho…

  • 自动化运维平台(后端python+django)「建议收藏」

    自动化运维平台(后端python+django)「建议收藏」Django的MTV模式Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:M代表模型(Model):负责业务对象和数据库的关系映射(ORM)。T代表模板(Template):负责如何把页面展示给用户(html)。V代表视图(View):负责业务逻辑,并在适当时候调用Model和Tem…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号