hmac sha256和sha256的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hmac sha256和sha256的区别相关的知识,希望对你有一定的参考价值。

两者是一样的。hmac是Hash-based Message Authentication Code的简写,就是指哈希消息认证码,包含有很多种哈希加密算法,sha256是其中一种。 参考技术A Java 已经实现了 SHA-256 和 SHA-512 两种 Hash 算法
利用 java.security.MessageDigest 调用已经集成的 Hash 算法
创建 Encrypt 对象,并调用 SHA256 或者 SHA512 并传入要加密的文本信息,分别得到 SHA-256 或 SHA-512 两种被加密的 hash 串。
若要改为 MD5 算法,修改传入参数 strType 为 "MD5" 即可得到 MD5 加密功能。

[java] view plain copy
package test;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class Encrypt


/**
* 传入文本内容,返回 SHA-256 串
*本回答被提问者采纳

hash模块 hashlib 和hmac

hashlib模块 

  1. 用于加密相关的操作,代替md5模块和sha模块,主要提供SHA1,SHA224,SSHA256,SHA384,SHA512,MD5算法  
  2. 直接看代码案例: 

---------md5----------- 

hash = hashlib.md5()  
hash.update(bytes(\'admin\',encoding=\'utf-8\'))  
hash.update(bytes(\'123\',encoding=\'utf-8\'))
print(hash.hexdigest()) 

print(hash.digest())

----------sha1--------- 

hash = hashlib.sha1()  
hash.update(bytes(\'admin\',encoding=\'utf-8\'))  
print(hash.hexdigest())  

----------sha256------- 

hash = hashlib.sha256()  
hash.update(bytes(\'admin\',encoding=\'utf-8\'))  
print(hash.hexdigest())

---------sha384-------- 

hash = hashlib.sha384()  
hash.update(bytes("admin",encoding=\'utf-8\'))  
print(hash.hexdigest())  

------------sha512-------- 

hash = hashlib.sha512()  
hash.update(bytes(\'admin\',encoding=\'utf-8\'))  
print(hash.hexdigest())  

 注意  

以上加密算法虽然非常厉害,但有时存在缺陷,即:通过撞库可以反解。  

所以,有必要对加密算法中添加自定义key再来加密 

hash = hashlib.md5(bytes(\'790dfhdfe3\',encoding=\'utf-8\'))  
hash.update(bytes(\'admin\',encoding=\'utf-8\'))  
print(hash.hexdigest())  
-------------------------------  
python 内置还有一个hmac模块,它内部对我们创建key和内容进行进一步的处理然后再加密  
import hmac  
h = hmac.new(bytes(\'dfew3\',encoding="utf-8"))  
h.update(bytes(\'admin\',encoding="utf-8"))  
print(h.hexdigest())  
  

 计算得到文件md5值

def MD5(file):
    import hashlib
    md5_value = hashlib.md5()
    with open(file, \'rb\') as file:
        while True:
            data = file.read(2048)
            if not data:
                break
            md5_value.update(data)
    return md5_value.hexdigest()



ret = MD5(r"C:\\Users\\Administrator\\Desktop\\aaaa\\cgss2008append.dta")
print(ret)

 

Base64加密解密方法

base64代码博文链接:http://www.cnblogs.com/txw1958/archive/2012/07/19/python3-base64.html

import base64

copyright = \'Copyright (c) 2012 Doucube Inc. All rights reserved.\'

def main():
    #转成bytes string
    bytesString = copyright.encode(encoding="utf-8")
    print(bytesString)

    #base64 编码
    encodestr = base64.b64encode(bytesString)
    print(encodestr)
    print(encodestr.decode())

    #解码
    decodestr = base64.b64decode(encodestr)
    print(decodestr.decode())


if __name__ == \'__main__\':
    main()

 

 

 

以上是关于hmac sha256和sha256的区别的主要内容,如果未能解决你的问题,请参考以下文章

[Python中具有SHA256的base64 HMAC

SHA256

在 Ruby 中使用 HMAC SHA256

对于 PBKDF2,使用 HMAC-SHA256 是不是比使用 HMAC-SHA-1 更安全?

使用 HMAC-SHA256 的 Python 编码消息

PBKDF2-HMAC-SHA256 for JAVA 的可靠实现