Python之encryption包语法、参数和实际应用案例 Python encryption包完整详解功能、安装、语法、8大案例、错误与注意事项encryption是 Python 中轻量、易用、跨平台的加密解密工具包基于 AES-256高级加密标准对称加密实现支持字符串、文件、字节流的安全加密无需复杂密码学知识即可快速使用适合日常数据脱敏、文件加密、API 数据传输加密等场景。一、核心功能对称加密使用同一密钥完成加密/解密AES-256-CBC 算法行业标准安全算法多类型数据支持字符串、字节数据、本地文件文本/图片/文档等任意格式自动处理填充AES 要求数据长度为16字节倍数包自动完成 PKCS7 填充/解填充Base64 编码加密后的二进制数据自动转为可读字符串方便传输/存储跨平台兼容Windows/Linux/Mac 通用加密结果一致二、安装方法1. 标准安装pippipinstallencryption2. 国内镜像加速解决安装慢/失败pipinstallencryption-ihttps://pypi.tuna.tsinghua.edu.cn/simple3. 验证安装打开 Python 终端执行以下代码无报错即安装成功importencryptionprint(encryption.__version__)# 查看版本最新稳定版1.0.1三、核心语法与参数encryption核心类AESEncryption唯一核心类所有功能基于此类实现1. 初始化语法fromencryptionimportAESEncryption# 创建加密器实例cryptorAESEncryption(key,ivNone)核心参数说明参数类型必选说明key字符串/字节✅ 必选加密密钥长度必须为32位AES-256要求iv字符串/字节❌ 可选初始向量长度必须为16位不填则自动生成随机iv安全建议生产环境必须手动指定固定iv自动生成的iv仅适合临时测试否则解密会失败。2. 核心方法加密/解密1字符串加密/解密# 加密字符串encrypted_strcryptor.encrypt(text)# 解密字符串decrypted_strcryptor.decrypt(encrypted_str)text待加密的字符串必填返回值加密后为Base64编码字符串解密后为原始字符串2字节数据加密/解密# 加密字节encrypted_bytescryptor.encrypt_bytes(data)# 解密字节decrypted_bytescryptor.decrypt_bytes(encrypted_bytes)data待加密的字节数据如图片、文件二进制流3文件加密/解密# 加密文件cryptor.encrypt_file(input_file,output_file)# 解密文件cryptor.decrypt_file(input_file,output_file)参数说明input_file原始文件路径加密/加密后文件路径解密output_file加密后文件保存路径 / 解密后文件保存路径四、8个实际应用案例可直接运行案例1基础字符串加密解密最简用法场景密码、手机号、身份证等敏感文本加密存储fromencryptionimportAESEncryption# 1. 定义32位密钥 16位iv固定值解密必须一致KEY12345678901234567890123456789012# 必须32位IV1234567890123456# 必须16位# 2. 创建加密器cryptorAESEncryption(keyKEY,ivIV)# 3. 加密敏感数据original_data我的银行卡号6222021234567890encrypted_datacryptor.encrypt(original_data)print(加密结果,encrypted_data)# 4. 解密数据decrypted_datacryptor.decrypt(encrypted_data)print(解密结果,decrypted_data)案例2自动生成iv加密临时测试场景本地临时测试无需固定ivfromencryptionimportAESEncryption# 仅指定32位密钥iv自动生成cryptorAESEncryption(keyabcdefghijklmnopqrstuvwxyz123456)text测试数据123encryptedcryptor.encrypt(text)decryptedcryptor.decrypt(encrypted)print(解密成功,decrypted)案例3字节流加密图片/二进制数据场景图片、音频等非文本数据加密fromencryptionimportAESEncryption KEY12345678901234567890123456789012IV1234567890123456cryptorAESEncryption(KEY,IV)# 读取图片为字节数据withopen(test.jpg,rb)asf:img_bytesf.read()# 加密字节encrypted_imgcryptor.encrypt_bytes(img_bytes)# 解密字节decrypted_imgcryptor.decrypt_bytes(encrypted_img)# 保存解密后的图片withopen(test_decrypted.jpg,wb)asf:f.write(decrypted_img)print(图片加密解密完成)案例4本地文件批量加密文档/表格场景批量加密办公文档防止数据泄露fromencryptionimportAESEncryptionimportos KEY12345678901234567890123456789012IV1234567890123456cryptorAESEncryption(KEY,IV)# 批量加密当前目录下所有txt文件forfileinos.listdir(.):iffile.endswith(.txt)andencryptednotinfile:input_pathfileoutput_pathfencrypted_{file}cryptor.encrypt_file(input_path,output_path)print(f已加密{file}-{output_path})案例5加密后文件解密场景还原加密后的文件fromencryptionimportAESEncryption KEY12345678901234567890123456789012IV1234567890123456cryptorAESEncryption(KEY,IV)# 解密加密文件cryptor.decrypt_file(encrypted_test.txt,decrypted_test.txt)print(文件解密成功)案例6API接口数据传输加密场景前后端/微服务间传输敏感数据防止抓包泄露fromencryptionimportAESEncryptionfromflaskimportFlask,request,jsonify appFlask(__name__)KEY12345678901234567890123456789012IV1234567890123456cryptorAESEncryption(KEY,IV)# 加密接口接收明文返回密文app.route(/encrypt,methods[POST])defencrypt_api():datarequest.json.get(data)encryptedcryptor.encrypt(data)returnjsonify({encrypted_data:encrypted})# 解密接口接收密文返回明文app.route(/decrypt,methods[POST])defdecrypt_api():encrypted_datarequest.json.get(encrypted_data)decryptedcryptor.decrypt(encrypted_data)returnjsonify({data:decrypted})if__name____main__:app.run(debugTrue)案例7配置文件敏感信息加密场景数据库密码、API密钥等不明文写入配置文件fromencryptionimportAESEncryptionimportjson# 密钥建议从环境变量读取不硬编码KEY12345678901234567890123456789012IV1234567890123456cryptorAESEncryption(KEY,IV)# 1. 加密敏感配置并保存config{db_host:127.0.0.1,db_user:root,db_password:cryptor.encrypt(123456)# 加密密码}withopen(config.json,w,encodingutf-8)asf:json.dump(config,f,ensure_asciiFalse)# 2. 读取并解密配置withopen(config.json,r,encodingutf-8)asf:configjson.load(f)decrypted_pwdcryptor.decrypt(config[db_password])print(解密后的数据库密码,decrypted_pwd)案例8日志敏感数据脱敏加密场景日志中手机号、身份证号加密避免泄露fromencryptionimportAESEncryptionimportlogging# 初始化加密器KEY12345678901234567890123456789012IV1234567890123456cryptorAESEncryption(KEY,IV)# 自定义日志过滤器加密敏感数据classEncryptFilter(logging.Filter):deffilter(self,record):# 替换手机号为加密后的值if13800138000inrecord.msg:record.msgrecord.msg.replace(13800138000,cryptor.encrypt(13800138000))returnTrue# 配置日志logging.basicConfig(filenameapp.log,levellogging.INFO)loggerlogging.getLogger()logger.addFilter(EncryptFilter())# 输出日志敏感数据自动加密logger.info(用户登录手机号13800138000)五、常见错误及解决方案错误1ValueError: Key must be 32 bytes long原因密钥长度不是32位AES-256强制要求解决方案将key修改为恰好32个字符的字符串错误2ValueError: IV must be 16 bytes long原因手动指定的iv长度不是16位解决方案将iv修改为恰好16个字符的字符串错误3UnicodeDecodeError/解密失败原因加密/解密的密钥/iv不一致加密后数据被篡改/截断使用自动生成的iv换实例解密解决方案确保加密和解密使用完全相同的keyiv错误4FileNotFoundError原因文件加密/解密时输入文件路径错误解决方案检查文件路径是否正确使用绝对路径更稳定错误5AttributeError: module encryption has no attribute AESEncryption原因安装了错误的包或包版本不兼容解决方案pip uninstall encryption-ypipinstallencryption1.0.1六、使用注意事项核心密钥与iv必须严格保密key32位和iv16位是解密的唯一凭证泄露后数据可被破解生产环境禁止硬编码建议从环境变量、密钥管理服务读取固定iv禁止依赖自动生成自动生成的iv仅适合本地测试跨实例/跨设备解密会直接失败正式使用必须手动指定固定16位iv加密后数据不可篡改加密后的Base64字符串任何字符修改都会导致解密失败传输/存储时避免数据截断、转义文件加密无格式限制支持文本、图片、视频、压缩包等所有文件格式大文件加密会占用内存建议分块处理超大文件推荐专用加密工具编码统一字符串加密默认使用utf-8编码跨平台使用时保持编码一致安全等级说明encryption基于AES-256满足企业级安全需求不适合极高安全场景如金融核心数据此类场景建议使用cryptography专业库总结encryption是AES-256对称加密轻量包主打易用性适合快速实现数据/文件加密核心约束key32位、iv16位加密解密必须使用相同密钥向量8大案例覆盖文本、文件、API、配置、日志等全场景可直接复用核心注意点保密密钥、固定iv、不篡改加密数据生产环境避免硬编码。《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章前6章涵盖深度学习基础包括张量运算、神经网络原理、数据预处理及卷积神经网络等后5章进阶探讨图像、文本、音频建模技术并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法每章附有动手练习题帮助读者巩固实战能力。内容兼顾数学原理与工程实现适配PyTorch框架最新技术发展趋势。