美文网首页
还不会python 实现常用的数据编码和对称加密?看这篇文章就够

还不会python 实现常用的数据编码和对称加密?看这篇文章就够

作者: 软件测试小白 | 来源:发表于2022-01-21 21:11 被阅读0次

相信很多使用 python 的小伙伴在工作中都遇到过,对数据进行相关编码或加密的需求,今天这篇文章主要给大家介绍对于一些常用的数据编码和数据加密的方式,如何使用 python 去实现。话不多说,接下来直接进入主题:

1、base64 编码

什么是 Base64 编码?

Base64 就是一种基于 64 个可打印字符来表示二进制数据的方法

在 python 中对数据进行 base64 编码可以使用 base64 这个官方库

案例:

import base64data="musen"# base编码data = data.encode()res = base64.b64encode(data)print(res)# base64解码res2 = base64.b64decode(res)print(res2)

2、常见的哈希算法:

hash算法有很多:比如MD4、MD5、SHA-1 , SHA-224, SHA-256, SHA-384 和 SHA-5等等。其中MD5是比较常见的一种,也称之为MD5加密。

什么是 MD5 加密?

MD5(Message Digest Algorithm 5),是一种哈希算法,是不可逆的,即通过 md5 加密之后没办法得到原文,没有解密算法

python 中有一个叫做 hashlib 的官方库,对于一些常见的哈希算法这个库都实现了,咱们在工作中如果要使用 MD5 加密,直接使用 hashlib 这个库就可以实现。

案例

fromhashlibimportmd5defencrypt_md5(data):"""md5加密"""# 创建md5对象new_md5 = md5()    new_md5.update(data.encode('utf-8'))    res = new_md5.hexdigest()# 加密returnres

3、DES 加密

什么是对称加密?

对称加密指的的加密和解密用同一个秘钥进行加解密的加密方式。

什么是 EDS 加密?

des 对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时 , 必须共同持相同的密码。

在 python 中有一个叫做 pyDes 的第三方库可以用来实现 DES 加密,使用之前需要先通过 pip 命令安装:pip install pyDes

案例:

frompyDes import des, CBC, PAD_PKCS5importbinasciidefdes_encrypt(s, KEY):secret_key=KEYiv=secret_keyk=des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)en=k.encrypt(s, padmode=PAD_PKCS5)returnbinascii.b2a_hex(en).decode()defdes_descrypt(s, KEY):secret_key=KEYiv=secret_keyk=des(secret_key, CBC, iv, pad=None, padmode=PAD_PKCS5)de=k.decrypt(binascii.a2b_hex(s), padmode=PAD_PKCS5)returnde.decode()if__name__ == '__main__':    # 秘钥KEY='mHAxsLtt'    # 加密res=des_encrypt("python666", KEY)print(res)  # 解密res2=des_descrypt(res, KEY)print(res2)

4、3DES 加密

什么是 3DES 加密?

3DES(或称为 Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次 DES 加密算法

python 中实现 3DES 加密可以使用,pyDes 这个模块去实现

案例:

importbase64importhashlibimportpyDesdefencrypt_3des(data):key="U8NjHq1ZP10="hash_md5=hashlib.md5()hash_md5.update(key.encode(encoding='UTF-8'))key=hash_md5.hexdigest()iv=key[0:8]key2=key[0:24]k=pyDes.triple_des(key2, pyDes.CBC, IV=iv, pad=None, padmode=pyDes.PAD_PKCS5)d=k.encrypt(data.encode())d=base64.b64encode(d)returnd.decode()defdescrypt_3des(data):key="U8NjHq1ZP10="hash_md5=hashlib.md5()hash_md5.update(key.encode(encoding='UTF-8'))key=hash_md5.hexdigest()iv=key[0:8]key2=key[0:24]k=pyDes.triple_des(key2, pyDes.CBC, IV=iv, pad=None, padmode=pyDes.PAD_PKCS5)data=base64.b64decode(data)d=k.decrypt(data)returnd.decode()if__name__ == '__main__':res=encrypt_3des('lemonban')print(res)res2=descrypt_3des(res)print(res2)

5、AES 加密

什么是 AES 加密?

AES 也是一种对称加密。它是用来替代之前的 DES 的,安全性更高。目前已经被多方分析且广为全世界所使用,并在 2002 年 5 月 26 日成为有效的标准 ,

关于 python 中实现 Aes 加密的库很多,大家可以去 pypi 上自行下载安装,下面案例用的是 Crypto 这个库

案例

importbase64fromCrypto.CipherimportAESclassAesEncrypt:# 密钥key ='0CoJUm6Qyw8W8jud'# 偏移量vi ='0102030405060708'defencrypt(self, data):"""加密"""data = data.encode('utf8')        data = (lambdas: s + (16- len(s) %16) * chr(16- len(s) %16).encode('utf-8'))(data)        cipher = AES.new(self.key.encode('utf8'), AES.MODE_CBC, self.vi.encode('utf8'))        encryptedbytes = cipher.encrypt(data)        encodestrs = base64.b64encode(encryptedbytes)        enctext = encodestrs.decode('utf8')returnenctextdefdecrypt(self, data):"""解密"""data = data.encode('utf8')        encodebytes = base64.decodebytes(data)        cipher = AES.new(self.key.encode('utf8'), AES.MODE_CBC, self.vi.encode('utf8'))        text_decrypted = cipher.decrypt(encodebytes)        unpad =lambdas: s[0:-s[-1]]        text_decrypted = unpad(text_decrypted)        text_decrypted = text_decrypted.decode('utf8')returntext_decryptedif__name__ =='__main__':# 注意点:加密数据中有中文的时候,会有问题data ="musen123"aes = AesEncrypt()# 加密enctext = aes.encrypt(data)    print(enctext)# # 解密text_decrypted = aes.decrypt(enctext)    print(text_decrypted)

相关文章

  • 还不会python 实现常用的数据编码和对称加密?看这篇文章就够

    相信很多使用 python 的小伙伴在工作中都遇到过,对数据进行相关编码或加密的需求,今天这篇文章主要给大家介绍对...

  • 08-密码学(终)

    前言 本篇文章讲解密码算法中的对称加密,也是很常用的一个重要算法策略,希望大家掌握! 一、对称加密 对称加密 ? ...

  • Java实现常用的三种加密算法详解

    Java实现常用的三种加密算法详解 信息摘要算法、对称加密算法以及非对称加密算法。本文将利用Java实现这几种常见...

  • Android 拿到私钥字符串对目标字符串进行加密

    关于加密算法 分为对称和非对称加密算法,其中RSA是常用非对称加密算法。对称加密中AES高级加密标准使用Rijnd...

  • 公钥私钥

    密钥配送问题 上面几篇文章我们讲到了对称加密,包括它的几种实现AES,DES算法。那么有了对称加密算法,我们是否就...

  • Android中常用的加密算法——RSA加密

    在上一遍Android中常用的加密算法——AES加密中我们介绍了对称加密和非对称加密,对称加密由于加密和解密使用同...

  • RSA加密

    简介 在非对称加密中,最常用的应该就是RSA加密了吧。在讲对称加密的时候,就曾经说过,对称加密算法在加密和解密时使...

  • OpenSSL

    openssl 功能 openssl可以实现:秘钥证书管理、对称加密和非对称加密 。 加密命令 对称加密算法Ope...

  • 常用加密算法

    1 常用加密算法 常用加密算法有 对称加密算法、非对称加密算法、Hash算法 对称加密算法 加密和解密使用相同的秘...

  • 快速了解常用的对称加密算法,再也不用担心面试官的刨根问底

    面试官:说一说你常用的加密算法有哪些? 加密算法通常被分为两种:对称加密和非对称加密。其中,对称加密算法在加密和解...

网友评论

      本文标题:还不会python 实现常用的数据编码和对称加密?看这篇文章就够

      本文链接:https://www.haomeiwen.com/subject/oldyhrtx.html