python md5加密和golang md5加密各有不同,记录于此做备忘

Python 方法 md5

  1. import base64
  2. import hashlib
  3.  
  4. def get_md5_data(body):
  5. """
  6. md5加密
  7. :param body_json:
  8. :return:
  9. """
  10.  
  11. md5lib = hashlib.md5()
  12. md5lib.update(body.encode("utf-8"))
  13. body_md5 = md5lib.digest()
  14. body_md5 = base64.b64encode(body_md5)
  15. return body_md5
  16.  
  17. if __name__ == "__main__":
  18. d = get_md5_data("woGo")
  19. print(d)

输出结果:

  1. b'daK0g/biVYQtHOZt0PaoEQ=='

比较 hash.digest() 和 hash.hexdigest() 区别

hash.digest() 
返回摘要,作为二进制数据字符串值

hash.hexdigest() 
返回摘要,作为十六进制数据字符串值

  1. import hashlib
  2.  
  3. md5 = hashlib.md5()
  4. md5.update("a".encode('utf-8'))
  5. print(u"digest返回的摘要:%s"% md5.digest())
  6. print(u"hexdigest返回的摘要:%s"% md5.hexdigest())

结果

  1. digest返回的摘要:b'\x0c\xc1u\xb9\xc0\xf1\xb6\xa81\xc3\x99\xe2iw&a'
  2. hexdigest返回的摘要:0cc175b9c0f1b6a831c399e269772661

Golang方法 md5 和 sha512

  1. package main
  2.  
  3. import (
  4. "crypto/md5"
  5. "crypto/sha512"
  6. "encoding/base64"
  7. "encoding/hex"
  8. "fmt"
  9. )
  10.  
  11. func main() {
  12. //fmt.Println(base64EncodeStr("2121"))
  13. //fmt.Println(md5Str("woGo"))
  14. //fmt.Println(sha512Str("woGo"))
  15. //fmt.Println(base64DecodeStr(base64EncodeStr("fd")))
  16.  
  17. // md5加密
  18. has := md5.New() // 创建md5算法
  19. has.Write([]byte("woGo")) // 写入需要加密的数据
  20. b := has.Sum(nil) // 获取hash值字符切片;Sum函数接受一个字符切片,这个切片的内容会原样的追加到abc123加密后的hash值的前面,这里我们不需要这么做,所以传入nil
  21. fmt.Println(base64EncodeStr(string(b)))
  22.  
  23. }
  24.  
  25. //md5验证
  26. func md5Str(src string) string {
  27.  
  28. h := md5.New()
  29. h.Write([]byte(src)) //
  30. //fmt.Printf("%s\n", hex.EncodeToString(h.Sum(nil))) // 输出加密结果
  31. return hex.EncodeToString(h.Sum(nil))
  32. }
  33.  
  34. //sha512验证
  35. func sha512Str(src string) string {
  36. h := sha512.New()
  37. h.Write([]byte(src)) //
  38. //fmt.Printf("%s\n", hex.EncodeToString(h.Sum(nil))) // 输出加密结果
  39. return hex.EncodeToString(h.Sum(nil))
  40. }
  41.  
  42. //base编码
  43. func base64EncodeStr(src string) string {
  44. return string(base64.StdEncoding.EncodeToString([]byte(src)))
  45. }
  46.  
  47. //base解码
  48. func base64DecodeStr(src string) string {
  49. a, err := (base64.StdEncoding.DecodeString(src))
  50. if err != nil {
  51. return "error"
  52. }
  53. return string(a)
  54. }

输出结果:

  1. daK0g/biVYQtHOZt0PaoEQ==

golang md5加密和python md5加密比较的更多相关文章

  1. python md5加密中文

    import md5 md5.new(u'中文').hexdigest() 会失败,报告ascii码不能解码0x.... 原因是md5会自动将被加密的数据转成字节码,如果没有详细制定编码,则可能采用了 ...

  2. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

  3. python接口自动化测试二十七:加密与解密MD5、base64

    # MD5加密 # 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作 import hashlib def MD5(str): # 创建md5对象 hl ...

  4. md5码加密(Python)

    import hashlib import hmac m = input('输入要加密内容:') md = hashlib.md5()#生成md5 hash对象 md.update(m.encode( ...

  5. Python 生成随机数函数和加密函数(MD5)

    内容来自debugtalk import hashlib import random import string def gen_random_string(str_len): '''生成指定长度的随 ...

  6. python MD5加密和flask-generate_password_hash

    实际开发过程中,有些数据是需要加密保存或者处理的,为了就是为了保证源数据的安全性.那么MD5加密作为一种简单有效的非对称加密方式在日常开发过程中也经常的被使用到.下面就来介绍下MD5算法: 1.  * ...

  7. 解决java,C#,php,python MD5加密不一致问题

    JAVA写法 public static String md5Base64(final String str, final String key) throws Exception { if ((nu ...

  8. MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

  9. Java实现 Base64、MD5、MAC、HMAC加密

    开始对那些基本的加密还不怎么熟练,然后总结了些,写了一个测试:支持 Base64.MD5.MAC.HMAC加密,长话短说,我们都比较喜欢自己理解,看代码吧! 采用的输UTF-8的格式... packa ...

随机推荐

  1. Docker 的目的是什么?

    Docker 提供了一个可用于托管任何应用程序的容器环境.在此,软件应用程序和 支持它的依赖项紧密打包在一起. 因此,这个打包的产品被称为 Container,因为它是由 Docker 完成的,所以它 ...

  2. 学习Solr(一)

    一.安装 1.需要的安装包:apache-tomcat-7.0.47.tar.gz.solr-4.10.3.tgz.tgz(jdk自行安装) 2.解压tomcat并创建solr文件夹 [root@lo ...

  3. resin服务之二----整合resin+Apache服务

    整合resin+Apache服务 1.为什么要整合Apache和resin? a. 早期的resin,tomcat对httpd服务支持不好. b.  tomcat,resin对rewrite,expi ...

  4. 记录md的偏好设置

  5. Linux 搭建Apollo

    简介 Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管理场景 ...

  6. servlet中的HttpServletRequest对象

    HttpServletRequest对象表示客户端浏览器发起的请求,当客户端浏览器通过HTTP协议访问服务器时,Tomcat会将HTTP请求中的所有信息解析并封装在HttpServletRequest ...

  7. C++ | 虚函数表内存布局

    虚表指针 虚函数有个特点.存在虚函数的类会在类的数据成员中生成一个虚函数指针 vfptr,而vfptr 指向了一张表(简称,虚表).正是由于虚函数的这个特性,C++的多态才有了发生的可能. 其中虚函数 ...

  8. char的越界赋值即其原理剖析

    思考: int ch = 'A'; int ch1 = 65; int ch2 = 321; printf("%c %c %c\n", ch, ch1, ch2);的输出结果是什么 ...

  9. html5网页录音和语音识别

    背景 在输入方式上,人们总是在追寻一种更高效,门槛更低的方式,来降低用户使用产品的学习成本.语音输入也是一种尝试较多的方式,有些直接使用语音(如微信语音聊天),有些需要将语音转化为文字(语音识别).接 ...

  10. HTTP权威指南:第二章

    URL概览 前面提到,URL资源是HTTP协议所使用的寻找资源位置的定位符.分为三个部分,主要的结构是: 方案://服务器/路径 这种结构使得网络上的每一个资源都只有唯一的命名方法,从而使得浏览器可以 ...