python内置模块hashlib对于字符串的加密解密加盐

hash是一类算法而hashlib模块是Python的一个内置模块,主要功能是使用对应的hash算法,加密二进制内容解密二进制内容

常见的hash算法有md5、sha1,sha256, sha512等
特点
1.内容敏感,那怕一个很小的字符发生改变都很明显
2.不可逆,不能逆向求值
3.计算极快,长度固定

加密

import hashlib


# 创建哈希对象
# hash_obj = hashlib.md5()
# hash_obj = hashlib.sha1()
# hash_obj = hashlib.sha512()
# hash_obj = hashlib.sha384()
hash_obj = hashlib.sha256()




# 添加需要加密的hash字符串,可以多次添加(多次添加的多个字符串会互相拼接)
# 因为哈希处理的是二进制的内容,所以字符串需要编码成二进制
hash_obj.update("我是哈希的测试字符串".encode("utf-8"))
hash_obj.update("我是哈希的测试字符串第二节".encode("utf-8"))
hash_obj.update("asadsdssdsd123444".encode("utf-8"))
hash_obj.update("sasartr6767687878.;*&^%$#@".encode("utf-8"))

# 打印加密结果
ret = hash_obj.hexdigest()
print(ret)

# 9052a9b6d6d499c286eaf299191c6ba0f8ce28b3f599259d83f92092c9e76ebb

# 分开拼接和整个传进去的加密结果是一样的
hash_obj = hashlib.sha256()
hash_obj.update("我是哈希的测试字符串我是哈希的测试字符串第二节asadsdssdsd123444sasartr6767687878.;*&^%$#@".encode("utf-8"))
ret = hash_obj.hexdigest()
print(ret)
# 9052a9b6d6d499c286eaf299191c6ba0f8ce28b3f599259d83f92092c9e76ebb

二进制文件加密

import hashlib
with open(r"C:\Users\xxxxxx\Desktop\xxxxxxx_python_test_dir\Python-UIAutomation-for-Windows-master.zip", 'rb') as file:
    file_binary_data = file.read()
hash_obj = hashlib.sha256()
hash_obj.update(file_binary_data)
ret = hash_obj.hexdigest()
print(ret)
# 512208dd4cad5a1e2e6764a578e18aa97c738e7fce9cce75d3c56beecad5bc98

密码加盐

密码加盐其实就是以特定规则给你的初始加密对象里面掺杂一些东西,然后再用哈希加密,这样的话就算被人破解了加密结果,他也不知道你的加盐规则是啥,保护了加密内容

# 初始加密字符串
hash_obj = hashlib.sha256()
target_str = "我是哈希的测试字符串"
hash_obj.update(target_str[:5].encode("utf-8"))
hash_obj.update(target_str[5:].encode("utf-8"))
ret = hash_obj.hexdigest()
print(ret)
# 2b7f9e5ffa533012e1c493a4dd4f47fdd053d1bc641cd74649c5bf8e0285c317


# 加盐(这里的加盐规则是在字符串的中间加盐,盐的内容为字符串"我是加的盐")
hash_obj = hashlib.sha256()
target_str = "我是哈希的测试字符串"
hash_obj.update(target_str[:5].encode("utf-8"))
hash_obj.update("我是加的盐".encode("utf-8"))
hash_obj.update(target_str[5:].encode("utf-8"))
ret = hash_obj.hexdigest()
print(ret)
# 4fe963dd8bd77d88494e1d698a273b0f02177062ca4bf76028f236fa1a74f390
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这里是一份Python 3的字符串加密解密函数代码: def encrypt_string(string): string = ''.join(format(ord(i), 'b') for i in string) string = string + '0' * (8 - (len(string) % 8)) string = [string[i:i+8] for i in range(0, len(string), 8)] encrypted_string = '' for i in string: encrypted_string += chr(int(i, 2)) return encrypted_stringdef decrypt_string(encrypted_string): string = [format(ord(i), '08b') for i in encrypted_string] string = ''.join(string) string = [string[i:i+8] for i in range(0, len(string), 8)] decrypted_string = '' for i in string: decrypted_string += chr(int(i, 2)) return decrypted_string ### 回答2: 下面是一个使用Python实现的简单字符串加密解密函数代码: ```python def encrypt(text, key): encrypted_text = '' for char in text: encrypted_text += chr(ord(char) + key) return encrypted_text def decrypt(encrypted_text, key): decrypted_text = '' for char in encrypted_text: decrypted_text += chr(ord(char) - key) return decrypted_text text = input("请输入要加密的字符串:") key = int(input("请输入密钥(整数):")) encrypted_text = encrypt(text, key) print("加密结果为:", encrypted_text) decrypted_text = decrypt(encrypted_text, key) print("解密结果为:", decrypted_text) ``` 这段代码定义了两个函数:`encrypt`用于加密字符串,`decrypt`用于解密字符串。加密过程中,我们将字符串中每个字符的ASCII码值加上密钥,生成加密后的字符;解密过程中,我们将加密字符串中每个字符的ASCII码值减去密钥,得到解密后的字符。 用户需要输入要加密的字符串和密钥(一个整数),然后分别输出加密结果和解密结果。 请注意,这段代码实现的加密解密算法非常简单,仅作为示例,请勿用于真正的加密需求中。在实际应用中,应该使用更加安全的加密算法和库。 ### 回答3: 以下是一个基于Python3的简单字符串加密解密函数代码: ```python def encrypt_string(string): encrypted = "" for char in string: encrypted += chr(ord(char) + 1) # 将每个字符的ASCII码加1来实现加密 return encrypted def decrypt_string(encrypted): decrypted = "" for char in encrypted: decrypted += chr(ord(char) - 1) # 将每个字符的ASCII码减1来实现解密 return decrypted # 测试加密解密函数 original_string = "Hello, World!" encrypted_string = encrypt_string(original_string) decrypted_string = decrypt_string(encrypted_string) print("原始字符串:", original_string) print("加密后字符串:", encrypted_string) print("解密后字符串:", decrypted_string) ``` 这段代码定义了两个函数,`encrypt_string`和`decrypt_string`,分别实现字符串加密和解密的功能。加密函数将输入的字符串中的每个字符的ASCII码加1,解密函数则将输入的加密字符串中的每个字符的ASCII码减1,从而实现加密和解密的转换。 在代码的最后部分,我们使用这两个函数来测试加密解密功能。首先定义一个原始字符串,然后使用`encrypt_string`函数对其进行加密,再使用`decrypt_string`函数对加密后的字符串进行解密,并输出结果。 以上就是一个简单的字符串加密解密函数的Python3代码。注意,这只是一个基本的实现,实际的加密解密算法可能会更加复杂和安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值