SQL 中的MD5,SHA256、sm3加密

工作中经常遇到敏感数据的交互,这就需要到加密,本次就记录一下常见的几种加密方式

一、MySQL 

SHA256

SELECT SHA2("123",256) 

查询结果

 MD5

select md5("123")

查询结果

 二、HIVE

 SHA256

SELECT SHA2("123",256) 

查询结果

 

MD5

select md5("123")

查询结果

 

 

 函数和结果都与MYSQL一致

三、Python

SHA256

import hashlib
# 1、待加密的字符串
str = '123'
# 2、实例化一个sha256对象
sha256 = hashlib.sha256()
# 3、调用update方法进行加密
sha256.update(str.encode('utf-8'))
# 4、调用hexdigest方法,获取加密结果
print(sha256.hexdigest())

 

 封装成函数

import hashlib
def sha256_jiami(x):
    '''
    Parameters
    ----------
    x : string
        需要加密的字符串.

    Returns
    -------
    字符窜加密后的字符

    '''
    sha256 = hashlib.sha256()
    sha256.update(x.encode('utf-8'))
    return sha256.hexdigest()

sha256_jiami('123')

MD5

import hashlib
 
need_md5='123'
md = hashlib.md5(need_md5.encode())
print(md.hexdigest()) # 单纯的MD5加密

 

封装成函数

import hashlib
def md5_jiami(x):
    '''
    Parameters
    ----------
    x : string
        需要加密的字符串

    Returns
    -------
    字符串加密后的字符

    '''
    md = hashlib.md5(x.encode())
    return md.hexdigest() # 单纯的MD5加密

md5_jiami('123')
#'202cb962ac59075b964b07152d234b70'

 

sm3加密

MySQL无法进行sm3加密,需要Python工具

import hashlib
def sm36_jiami(x):
    '''
    Parameters
    ----------
    x : string
        需要加密的字符串.

    Returns
    -------
    字符窜加密后的字符

    '''
    # 创建SM3对象
    sm3 = hashlib.new('sm3')
    sm3.update(x.encode('utf-8'))
    
    return sm3.hexdigest()

sm36_jiami('Hello, World!')

可与config.net.cn/tools/SM3.html 对比加密是否正确

 

posted on 2022-07-25 10:01  小小喽啰  阅读(4654)  评论(0编辑  收藏  举报