说明

摘要可以作为文件的唯一识别和信息验证,在进行大量存储时是很有比较的。

内容

以前不太清楚哪里出过错,感觉服务器上计算hash和本地不一致。

由于python的hashlib是对二进制文本进行计算的,所以只要保证包的一致,应该两边计算是一致的。

程序端

# 测试哈希值
import hashlib
import pickle
def md5_trans(x):md5 = hashlib.md5()if isinstance(x, str):x1 = x.strip()md5.update(x1.encode("utf8"))else:md5.update(x)return md5.hexdigest()def get_md5_digest(x):x1 = pickle.dumps(x)return md5_trans(x1)def sha256_trans(x):sha256 = hashlib.sha256()if isinstance(x, str):x1 = x.strip()sha256.update(x1.encode("utf8"))else:sha256.update(x)return sha256.hexdigest()def get_sha256_digest(x):x1 = pickle.dumps(x)return sha256_trans(x1)data_dict = {}
data_dict['raw'] = {'name':'andy'}
data_dict['md5_hash'] = get_md5_digest(data_dict['raw'])
data_dict['sha256_hash'] = get_sha256_digest(data_dict['raw'])url = 'http://localhost:5000/read_mongo/view9_test5_hash/'
res = requests.post(url, json  =data_dict)
print(json.loads(res.text))

借用之前起的一个flask服务

服务端

# 额外,检测哈希值
# 测试哈希值
import hashlib
import pickle
def md5_trans(x):md5 = hashlib.md5()if isinstance(x, str):x1 = x.strip()md5.update(x1.encode("utf8"))else:md5.update(x)return md5.hexdigest()def get_md5_digest(x):x1 = pickle.dumps(x)return md5_trans(x1)def sha256_trans(x):sha256 = hashlib.sha256()if isinstance(x, str):x1 = x.strip()sha256.update(x1.encode("utf8"))else:sha256.update(x)return sha256.hexdigest()def get_sha256_digest(x):x1 = pickle.dumps(x)return sha256_trans(x1)@app1.route('/view9_test5_hash/', methods=['GET', 'POST'])
def view9_test5_hash():data = request.get_json()md5_server_hash = get_md5_digest(data['raw'])sha256_server_hash = get_sha256_digest(data['raw'])print('>>>', data)res_dict ={}res_dict['status'] = True res_dict['msg'] = 'read'res_dict['original_data'] = datares_dict['md5_server_hash'] = md5_server_hashres_dict['sha256_server_hash']=sha256_server_hashreturn jsonify(res_dict)

结果比对:可以看到本地和服务器是一致的,这样至少在传数据时可以进行一次校验。

{'md5_server_hash': '15a7c5ce316ce5d647dd408be2b6bd81',
'sha256_server_hash': '8e0b0076bc605a261aea58f5514222a355d949150d7bbe01303532157850b462',
'msg': 'read', 'original_data':
{'md5_hash': '15a7c5ce316ce5d647dd408be2b6bd81', 'raw': {'name': 'andy'}, 'sha256_hash': '8e0b0076bc605a261aea58f5514222a355d949150d7bbe01303532157850b462'},  'status': True}

Python一些可能用的到的函数系列11 本地哈希和服务器哈希比对相关推荐

  1. Python一些可能用的到的函数系列37flipflop 对象

    说明 对于调用成功一个函数,立即调用另一个函数的应用.例如从数据库获取了一批数据,将某些结果回写的过程. 内容 假设有两个函数,写成了不定参格式,这样比较通用. hello def hello(*ar ...

  2. Python一些可能用的到的函数系列76 最大回撤率

    说明 这个问题其实有点绕,写在这里备忘吧. 内容 最大回撤:从任何一个峰值向后的最大落差. 两个要点: 1 找峰值 2 从峰值往后看,找到最大落差 最后取所有峰值的最大值就是最大回撤. 如下一个数列, ...

  3. Python一些可能用的到的函数系列102 推断df的变量类型

    说明 这个主要是为了在sql里快速建表 内容 对每列的变量进行遍历,去掉空之后进行简单的判定.数值(double.float和date)的数据长度是固定的,变化比较大的是字符型.我觉得可以采用最大最小 ...

  4. Python一些可能用的到的函数系列81 基于Redis Stream的简单消息队列对象

    说明 一个实现消息队列简单管理的对象 内容 代码 import redis # 基于Redis Stream的消息队列 class LittleRQ:def __init__(self, host, ...

  5. Python一些可能用的到的函数系列28 超大文本文件分割读取

    说明 有时候会有一些特别大的文本文件需要拆分处理 内容 1 曾经用过的笨办法 1.1 读取大文件的末尾n行 # 采用偏置方法读取末尾三百行文本 def read_tail_n(fname, n_lin ...

  6. python中读取文件过程中seek()函数的使用

    python中读取文件过程中seek()函数的使用 目录 概述: 语法: 参数: 返回值: 实例: 概述: seek() 方法用于移动文件读取指针到指定位置. 语法: seek() 方法语法如下: 文 ...

  7. python使用statsmodels包中的tsaplots函数和lags参数可视化时间序列数据指定滞后位置个数(级别)以前的所有自相关性(plot the autocorrelation)

    python使用statsmodels包中的tsaplots函数和lags参数可视化时间序列数据指定滞后位置个数(级别)以前的所有自相关性(plot the autocorrelation Funct ...

  8. python使用matplotlib可视化雷达图(polar函数可视化雷达图、极坐标图、通过径向方向来显示数据之间的关系)

    python使用matplotlib可视化雷达图(polar函数可视化雷达图.极坐标图.通过径向方向来显示数据之间的关系) 目录

  9. python使用matplotlib可视化、使用subplots函数将可视化的画布划分为网格状的若干子区、通过nrows和ncols参数设置设置行数和列数

    python使用matplotlib可视化.使用subplots函数将可视化的画布划分为网格状的若干子区.通过nrows和ncols参数设置设置行数和列数 目录

最新文章

  1. 【转】Java中File常用的方法汇总
  2. smartdraw 2008 成功安装
  3. 自定义Android带图片的按钮
  4. 批量移动AD用户到指定OU
  5. redhat6.5手动配置网络
  6. Cocoapods的Podfile常见语法总结
  7. 吴恩达机器学习笔记 1单变量线性回归
  8. 2017.9.6.语文
  9. 漆桂林:多模态知识图谱种类及其应用
  10. 应用数据难互通 如何打破小微企业“信息壁垒”?
  11. 内存与硬盘读取速度对比
  12. h5支付不能打开支付宝 ios_iOS 手机网站支付转Native支付(H5支付页面调起支付宝客户端(app))...
  13. Windows 7 重装系统
  14. android音频系统(4):AudioService之音量管理
  15. 物联网为什么需要5G?
  16. 详解clickhouse分区目录的合并过程
  17. 海量CAD图纸哪里获取呢?
  18. 在Proteus新建项目
  19. 第五次作业-需求原型改进
  20. 【小程序】微信小程序如何获取用户微信openID?(已解决,完整代码实例)

热门文章

  1. 蒙氏计算机教育目的,蒙氏数学领域基础理论及教育目的
  2. 【我的Android进阶之旅】NDK开发引入第三方so库(比如assimp和opencv库)常出现的几个问题:missing and no known rule to make it等
  3. DCQCN+QCN+DCTCP
  4. 3盏灯和3个开关的对应关系
  5. NoiOpenjudge水题选刷之_搜索
  6. 物体检测Object Detection学习笔记(MXNet)(二)
  7. 服务器同步电脑文件夹在哪,把文件同步到服务器上
  8. java实现excel导入导出(jxl),Java入门你值得拥有
  9. Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64)
  10. web开发之长度单位:px, pt, rem, vw, vh