python ecb是什么?python ecb加密解密实例

在 Python 中处理 ECB(Electronic Codebook,电子密码本模式) 通常涉及对称加密算法(如 AES),但需要特别强调的是:

⚠️ ECB 模式是不安全的,因为它对相同的明文块生成相同的密文块,无法隐藏数据模式,仅用于学习或测试,切勿用于生产环境,推荐使用 CBC、CTR、GCM 等更安全的模式。

python纯实现aes加密的ECB和CBC模式,带你使用python手写aes,提供python代码!!!
加载中
python纯实现aes加密的ECB和CBC模式,带你使用python手写aes,提供python代码!!!

使用 pycryptodome 库实现 AES-ECB

安装依赖

pip install pycryptodome

加密示例

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
def aes_ecb_encrypt(plaintext: str, key: bytes) -> bytes:
    """
    使用 AES-ECB 模式加密
    :param plaintext: 明文字符串
    :param key: 16/24/32 字节的密钥
    :return: Base64 编码的密文
    """
    if len(key) not in (16, 24, 32):
        raise ValueError("密钥长度必须为 16、24 或 32 字节")
    cipher = AES.new(key, AES.MODE_ECB)
    padded_data = pad(plaintext.encode('utf-8'), AES.block_size)
    ciphertext = cipher.encrypt(padded_data)
    return base64.b64encode(ciphertext)
def aes_ecb_decrypt(ciphertext_b64: str, key: byt

python ecb是什么?python ecb加密解密实例

es) -> str: """ 使用 AES-ECB 模式解密 :param ciphertext_b64: Base64 编码的密文 :param key: 16/24/32 字节的密钥 :return: 解密后的明文 """ if len(key) not in (16, 24, 32): raise ValueError("密钥长度必须为 16、24 或 32 字节") ciphertext = base64.b64decode(ciphertext_b64) cipher = AES.new(key, AES.MODE_ECB) padded_plaintext = cipher.decrypt(ciphertext) plaintext = unpad(padded_plaintext, AES.block_size) return plaintext.decode('utf-8') # 示例使用 if __name__ == "__main__": key = b'0123456789abcdef' # 16 字节密钥(AES-128) message = "Hello, ECB Mode!" encrypted = aes_ecb_encrypt(message, key) print(f"加密结果 (Base64): {encrypted.decode('utf-8')}") decrypted = aes_ecb_decrypt(encrypted.decode('utf-8'), key) print(f"解密结果: {decrypted}")

使用 cryptography 库(不直接支持 ECB,需手动实现)

注意:cryptography 库出于安全考虑,默认不提供 ECB 模式,如需使用,需借助底层 Cipher 并指定 mode=ECB(部分版本支持)。

from cryptog

python ecb是什么?python ecb加密解密实例

raphy.hazmat.primitives.ciphers import Cipher, algorithms, modes from cryptography.hazmat.backends import default_backend from Crypto.Util.Padding import pad, unpad # 仍需 pycryptodome 用于填充 import base64 def aes_ecb_encrypt_cryptography(plaintext: str, key: bytes) -> bytes: if len(key) not in (16, 24, 32): raise ValueError("密钥长度必须为 16、24 或 32 字节") padded_data = pad(plaintext.encode('utf-8'), 16) cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=default_backend()) encryptor = cipher.encryptor() ciphertext = encryptor.update(padded_data) + encryptor.finalize() return base64.b64encode(ciphertext) def aes_ecb_decrypt_cryptography(ciphertext_b64: str, key: bytes) -> str: if len(key) not in (16, 24, 32): raise ValueError("密钥长度必须为 16、24 或 32 字节") ciphertext = base64.b64decode(ciphertext_b64) cipher = Cipher(algorithms.AES(key), modes.ECB(), backend=default_backend()) decryptor = cipher.decryptor() padded_plaintext = decryptor.update(ciphertext) + decryptor.finalize() plaintext = unpad(padded_plaintext, 16) return plaintext.decode('utf-8')

重要提醒

项目 说明
安全性

python ecb是什么?python ecb加密解密实例

ECB 不推荐用于任何实际应用场景

替代方案 使用 AES.MODE_CBC、AES.MODE_CTR 或 AES.MODE_GCM
密钥管理 密钥应安全存储,避免硬编码
填充方式 使用 Crypto.Util.Padding 进行 PKCS7 填充

更安全的替代示例(AES-GCM)

from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
import base64
def aes_gcm_encrypt(plaintext: str, key: bytes) -> tuple:
    """返回 (nonce, ciphertext, tag)"""
    cipher = AES.new(key, AES.MODE_GCM)
    ciphertext, tag = cipher.encrypt_and_digest(plaintext.encode('utf-8'))
    return cipher.nonce, ciphertext, tag
def aes_gcm_decrypt(nonce: bytes, ciphertext: bytes, tag: bytes, key: bytes) -> str:
    cipher = AES.new(key, AES.MODE_GCM, nonce=nonce)
    plaintext = cipher.decrypt_and_verify(ciphertext, tag)
    return plaintext.decode('utf-8')
# 使用示例
key = get_random_bytes(32)  # 256 位密钥
nonce, ct, tag = aes_gcm_encrypt("Secure message", key)
decrypted = aes_gcm_decrypt(nonce, ct, tag, key)
print(f"解密: {decrypted}")

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/480978.html

赞 (0)
Python美元怎么换算?Python汇率转换代码
上一篇 2026年7月10日 16:45
Python HttpRunner如何快速上手?接口自动化测试框架实战
下一篇 2026年7月10日 16:48

相关推荐

  • idc服务器管理系统究竟有哪些功能,哪个品牌好?

    IDC服务器管理系统的核心功能可以概括为一句话:它是一套集硬件监控、远程运维、安全防护和自动化管理于一体的综合控制平台,帮助运维人员从繁琐的重复劳动中解放出来,让服务器始终处于健康运行状态,底层监控体系:看得见的硬件健康服务器硬件状态实时追踪IDC服务器管理系统首先扮演着机房守夜人的角色,系统通过IPMI/BM……

    2026年8月22日
    300
  • 高精度人脸门禁识别好用吗?人脸门禁系统哪家准确率高

    2026年高精度人脸门禁识别系统已全面跨入防伪与无感通行时代,真正实现毫秒级活体检测与99.9%以上的精准识人,成为企业安防与智慧园区的核心基建,技术跃迁:高精度人脸门禁的底层逻辑算法演进:从2D到3D结构光的降维打击传统2D人脸门禁易受光照、姿态影响,更面临照片或视频破解风险,2026年主流高精度人脸门禁识别……

    2026年4月28日
    6100
  • python中fileno是什么?python的fileno方法怎么用

    在Python中,fileno()方法用于获取文件描述符(File Descriptor, FD),它是操作系统层面用于标识打开文件的整数索引,常用于底层I/O操作或与C扩展交互,很多开发者在处理文件读写时,习惯直接使用open()返回的文件对象,但在涉及网络编程、多进程通信或系统级调用时,直接操作文件描述符往……

    2026年7月6日
    20600
  • 服务器搭建oracle数据库步骤有哪些,oracle数据库安装教程详解

    在服务器上成功搭建并运行Oracle数据库,核心在于构建一个稳定的操作系统环境、合理规划系统资源参数,以及执行严谨的安装后配置流程,搭建过程并非简单的“下一步”点击,而是对系统内核、依赖包、用户权限及网络配置的深度调优,只有在底层环境完全符合Oracle官方要求的前提下,数据库实例才能实现高可用性与高性能表现……

    2026年3月10日
    10100
  • 个人域名网站怎么注册?域名注册流程详细步骤

    选定符合品牌调性的域名、选择信誉良好的注册商、完成实名认证并配置DNS解析,整个过程通常耗时30分钟至2小时,在数字化生存成为常态的2026年,拥有一个专属域名不再仅仅是技术极客的爱好,而是个人品牌资产化的基础设施,它像是一块数字地产,无论社交媒体算法如何变迁,这块地皮始终掌握在你手中,许多新手在起步阶段往往被……

    服务器运维 2026年6月6日
    3600
  • 服务器虚拟机的作用有哪些

    服务器虚拟机通过虚拟化技术将一台物理服务器分割成多个独立、隔离的虚拟环境,本质是让硬件资源被更灵活地调用,从而大幅提升整体效率、降低运营成本,并实现业务的高可用与快速扩展,资源整合与成本优化硬件利用率从低到高传统物理服务器模式中,多数应用只用到硬件能力的10%到20%,大量算力、内存和存储被闲置,虚拟机打破了这……

    2026年8月13日
    200
  • 个人开发者学什么编程语言好?适合初学者的编程语言推荐

    对于个人开发者而言,2026年最推荐的编程语言组合是Python用于快速原型与AI应用,JavaScript/TypeScript用于全栈Web开发,而Rust或Go则适合对性能有极致要求的底层工具开发,具体选择取决于你的项目场景而非单纯的技术偏好,选择编程语言不再仅仅是学习语法,更是选择一种生态和工作流,在2……

    2026年5月29日
    5000
  • 服务器提示内存错误怎么解决,服务器内存错误的原因和解决方法

    服务器提示内存错误的根本原因通常集中在硬件故障、软件冲突或系统配置不当三个维度,解决该问题的核心逻辑遵循“由软到硬、由表及里”的排查顺序,优先通过重启服务、清理缓存释放资源,其次排查应用日志与代码漏洞,最后进行物理内存条的检测与更换,绝大多数情况下,通过系统级的诊断工具与科学的替换法,可以在短时间内定位并解决问……

    2026年3月7日
    14400
  • 服务器如何获取客户端cookie?,如何实现?

    服务器获取客户端cookie的核心途径是解析HTTP请求头中的Cookie字段,后端语言通过相应API读取即可,服务器获取客户端cookie的基本原理HTTP协议中的Cookie传递机制Cookie在HTTP协议中通过请求和响应头传递,客户端每次向服务器发起请求时,会自动将符合域名、路径、安全等条件的cooki……

    2026年8月7日
    700
  • 防火墙品牌排名哪些品牌在市场上更受信赖,如何选择最合适的防火墙产品?

    全球防火墙品牌综合竞争力排名(2024权威版)根据Gartner魔力象限、NSS Labs实测数据及企业级部署反馈,当前市场核心品牌综合排名如下:Palo Alto Networks(技术领导者)Fortinet(性价比标杆)Cisco(生态整合王者)Check Point(安全架构先驱)华为(国产化首选)Ju……

    2026年2月5日
    21500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注