哈希算法

哈希算法

哈希算法:

把任意长度的输入(又叫做预映射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

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 自定义Appfabric Cache 配置提供程序「建议收藏」

    自定义Appfabric Cache 配置提供程序「建议收藏」默认情况下,AppFabric缓存提供了两种配置存储:一个SQLServer存储和XML文件存储。该解决方案提供和供AppFabric缓存自定义配置提供程序,使用AmazonS3存储缓存的配置。您可以创建您通过实现IDataStoreProxy接口和注入新的实施将自己的数据存储TransactionContext看看现有AmazonProxy指导。该解决方案包含4个项目一…

    2022年10月10日
    6
  • 基准测试框架JMH使用详解

    基准测试框架JMH使用详解JMH简介JMH即JavaMicrobenchmarkHarness,是Java用来做基准测试的一个工具,该工具由OpenJDK提供并维护,测试结果可信度高。基准测试Benchmark是测量、评估软件性能指标的一种测试,对某个特定目标场景的某项性能指标进行定量的和可对比的测试。项目中添加依赖创建一个基准测试项目,在项目中引入JMH的jar包,目前JMH的最新版本为1.23。以maven为例,依赖配置如下。<dependencies><dependency

    2022年7月11日
    19
  • css 的 opacity 属性

    css 的 opacity 属性opacity用于指定元素透明度,支持0~1之间的小数.默认值1-完全不透明,0-完全透明<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>opacity</title><style>/*opacity默认1,完全不透明0完全透明

    2022年5月26日
    44
  • 好用又好玩的微信小程序大全「建议收藏」

    小马哥去合肥坐公交车,把小程序推广的更加的接地气和实用,微信的巨大用户量,让小程序有天然的流量入口,其次小程序不用下载安装耗费流量,占用手机的存储空间,启动速度比APP相当,下面是网友整理的目前好用的微信小程序大全,有的是软件开放的,有的可能是在好建小程序免费生成的,建议大家根据自己的喜好和需要收藏!【热门小程序】美团外卖滴滴公交查询车来了

    2022年4月11日
    50
  • 弗曼技巧笔记

    弗曼技巧笔记弗曼技巧学习过程:选择一个概念 向其他人讲解这个概念 对讲解中出现的卡壳发现不懂的问题,回头去进一步学习学习过程中使用流程图,便于理解与记忆。弗曼技巧注重于正负反馈,有了正负反馈才能够对知识进行更好的理解。不同方式下学习内容留存率:弗曼技巧使用了最有效的方式—教授给他人。讲解的方式:可以依靠简化或类比的方式进行讲解,直到对方理解。…

    2022年6月14日
    35
  • 方差、协方差、标准差、均方差、均方根值、均方误差、均方根误差对比分析[通俗易懂]

    方差、协方差、标准差、均方差、均方根值、均方误差、均方根误差对比分析[通俗易懂]方差、协方差、标准差(标准偏差/均方差)、均方误差、均方根误差(标准误差)、均方根值本文由博主经过查阅网上资料整理总结后编写,如存在错误或不恰当之处请留言以便更正,内容仅供大家参考学习。 方差(Variance) 方差用于衡量随机变量或一组数据的离散程度,方差在在统计描述和概率分布中有不同的定义和计算公式。①概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏…

    2022年9月30日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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