Python base64 y módulos hashlib

1. módulo base64

El módulo base64 proporciona la función de codificación y decodificación entre datos binarios y caracteres ASCII imprimibles, incluidos Base16, Base32, Base64, Ascii85, Base85 y otras codificaciones definidas en RFC3548.

El módulo base64 pertenece a la biblioteca estándar y se puede utilizar sin instalación.

El módulo base64 admite dos interfaces:

  • Los datos de tipo bytes están codificados en base64. Es decir, codifica un objeto similar a bytes como bytes representados por caracteres imprimibles en ASCII.
  • El tipo de bytes codificados en base64 se decodifica. Es decir, descodifique una cadena Unicode que consiste en objetos similares a bytes o caracteres ASCII simples en bytes.

注意:El objeto de procesamiento de codificación y decodificación es byte, y los parámetros deben ser datos binarios antes de que puedan usarse normalmente.

1. Codificar y decodificar la cadena

import base64

str = "Hello Python"

# 默认以utf-8编码
byte_str = str.encode("utf-8")
b64_str = base64.b64encode(byte_str)
print(b64_str)

print("-------------")

# 默认以utf-8解码
byte_str2 = base64.b64decode(b64_str)
str2 = byte_str2.decode("utf-8")
print(str2)

inserte la descripción de la imagen aquí

2. Codifica y decodifica la URL

import base64

url = "http://www.baidu.com?k1=v1&k2=值二"

# 默认以utf-8编码
byte_url = url.encode("utf-8")
b64_url = base64.b64encode(byte_url)
print(b64_url)  # b'aHR0cDovL3d3dy5iYWlkdS5jb20/azE9djEmazI95YC85LqM'

print("-------------")

# 默认以utf-8解码
byte_url2 = base64.b64decode(b64_url)
url2 = byte_url2.decode("utf-8")
print(url)  # http://www.baidu.com?k1=v1&k2=值二

Dos, módulo hashlib

1. módulo hashlib

hashlib es un módulo incorporado de Python, que proporciona una variedad de algoritmos de resumen comunes seguros y convenientes, incluidos MD5, SHA1, SHA256, SHA384, SHA512, etc. Estos métodos abstractos son de uso común y devuelven un objeto hash con la misma interfaz.La única diferencia en la elección del algoritmo radica en la elección del método de construcción.

摘要算法又称哈希算法、散列算法。Convierte datos de cualquier longitud en una cadena de datos de longitud fija a través de un algoritmo de función).

1.1 Propiedades comunes

import hashlib

#列出hashlib内容
print(dir(hashlib))
#列出所有加密算法
print(hashlib.algorithms_available) 
print(hashlib.algorithms_guaranteed)

#产生的散列字节大小。
h.digest_size

#哈希内部块的大小
h.block_size

1.2 Métodos comunes

# 创建指定加密模式的hash对象
hash.new([arg])

# 更新哈希对象以字符串参数。
# 如果同一个hash对象重复调用该方法,m.update(a); m.update(b) 等价于 m.update(a+b)
hash.update(arg)

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

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

# 复制
hash.copy()

1.3 Pasos para usar

método uno:

import hashlib

# -------以 MD5为例-------
# 1. 创建hash工厂
m = hashlib.md5()

# 2. 在内存里面加载二进制数据
# m.update('Hello'.encode('utf-8'))
# m.update('Python'.encode('utf-8'))
## 等价于,如果二进制数据很长的话,可以分开更新
m.update('Hello Python'.encode('utf-8'))

print(m.digest_size)  # 16
print(m.block_size)  # 64

# 3、返回十六进制str摘要值
hash_value = m.hexdigest()
print(hash_value)  # a709c173220d6185d12248faa9f40ac8

# 3.返回bytes格式的消息摘要
print(m.digest())  # b'\xa7\t\xc1s"\ra\x85\xd1"H\xfa\xa9\xf4\n\xc8'

Método 2:

import hashlib

'''
一个通用的构造方法,
    name:是某个算法的字符串名称,
    data:是可选的bytes类型待摘要的数据。
'''
m = hashlib.new('md5', b'Hello Python')
print(m.hexdigest())
print(m.digest())

print("-----复制方法测试-----")

# 复制
m2 = m.copy()
print(m2)
print(m2.hexdigest())
print(m2.digest())

inserte la descripción de la imagen aquí

2. MD5 (algoritmo de resumen de mensajes)

MD5 Message Digest Algorithm (inglés: MD5 Message-Digest Algorithm), una función hash criptográfica ampliamente utilizada, puede generar un valor hash de 128 bits (valor hash), que se utiliza para garantizar la integridad y coherencia de la transmisión de información.

El código de ejemplo es el siguiente:

import hashlib

def jm_md5(password):
    # 构建MD5对象
    m = hashlib.md5()
    # 自定义加盐值
    m.update('abc'.encode(encoding='utf-8'))
    m.update(password.encode(encoding='utf-8'))
    # 返回十六进制str摘要值
    password_md5 = m.hexdigest()
    return password, password_md5


res = jm_md5('123456')
print(res) # ('123456', '0659c7992e268962384eb17fafe88364')

3. SHA-256 (algoritmo hash seguro)

El algoritmo hash seguro se aplica principalmente al algoritmo de firma digital DSA definido en el estándar de firma digital DSS. Verificar la integridad de los datos.

Los científicos han introducido SHA1, SHA224, SHA256, SHA384 y SHA512. Por supuesto, cuanto mayor es el número de dígitos, más difícil es descifrar, pero al mismo tiempo lleva más tiempo generar el resumen del mensaje cifrado. El más utilizado es SHA-256.

El código de ejemplo es el siguiente:

import hashlib

def jm_sha256(password):
    # 构建MD5对象
    m = hashlib.sha256()
    # m = hashlib.sha512()

    # 自定义加盐值
    m.update('abc'.encode(encoding='utf-8'))
    m.update(password.encode(encoding='utf-8'))
    # 返回十六进制str摘要值
    password_md5 = m.hexdigest()
    return password, password_md5


res = jm_sha256('123456')
print(res) 
# ('123456', 'a03c32fcd351cba2d9738622b083bed022ef07793bd92b59faea0207653f371d')

– Si tienes hambre de conocimiento, sé humilde si eres tonto.

Supongo que te gusta

Origin blog.csdn.net/qq_42402854/article/details/129165456
Recomendado
Clasificación