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://idctop.com/python-ecb%e6%98%af%e4%bb%80%e4%b9%88%ef%bc%9fpython-ecb%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86%e5%ae%9e%e4%be%8b/

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

相关推荐

  • 服务器小机是什么?服务器小机和普通服务器有什么区别

    服务器小机是什么?服务器小机是专指采用RISC架构、运行Unix或类Unix操作系统、具备高可靠性与企业级管理能力的小型服务器系统,典型代表为IBM Power Systems、Oracle SPARC Server、HPE Superdome Flex等,它并非指物理尺寸小的服务器,而是特指面向关键业务负载……

    2026年4月14日
    6400
  • 服务器架设详细教程,从零开始的操作步骤详解?

    服务器架设专业步骤指南前期规划与需求分析:精准定位是基石明确核心目标: 服务器用于网站托管、数据库、文件存储、应用服务还是虚拟化平台?目标决定硬件配置、软件选型和网络架构,评估性能需求: 估算预期用户量、并发连接数、数据处理量、存储空间及增长趋势,这直接影响CPU核心数、内存容量、磁盘类型(SSD/HDD, S……

    服务器运维 2026年2月14日
    12900
  • 服务器怎么查看接入商?服务器接入商查询方法详解

    查看服务器接入商最直接、最权威的方法是通过工信部备案管理系统查询网站的备案信息,或者使用专业的IP地址归属查询工具(如IP138、站长工具)追踪IP的物理归属与运营商信息,对于网站运营者而言,明确接入商身份是进行ICP备案、服务器迁移以及合规运营的关键前提,核心在于区分“域名注册商”与“服务器接入商”的概念,并……

    2026年3月15日
    14800
  • 服务器监控厂商哪家好?2026年十大服务器监控工具推荐

    服务器监控厂商是企业数字化基础设施稳健运行的“守护者”与“洞察者”,他们提供的专业解决方案,通过实时、精准地采集、分析服务器及关联IT资源的性能与状态数据,为IT运维团队提供关键洞察,确保业务连续性、优化资源利用率并提升整体IT治理水平,核心监控能力:构建全面感知网络卓越的服务器监控厂商,其核心价值首先体现在全……

    2026年2月8日
    14300
  • 个人做网站外包价格如何算?建站费用一般多少钱

    个人做网站外包价格没有统一标准,通常从几千元的基础展示型网站到数万元的功能型定制网站不等,核心取决于技术复杂度、设计原创性及后期维护需求,很多初次接触网站建设的小微企业主或创业者,往往对报价单上的数字感到困惑,为什么有的报价3000元,有的却要3万?这中间的差价并非随意定价,而是由具体的功能模块、开发工时以及后……

    2026年6月14日
    3300
  • 服务器有72个进程正常吗,服务器进程数多少正常

    服务器有72个进程正常吗?答案是肯定的,这通常属于非常正常的范畴,甚至在现代服务器架构中,这个数量级属于“轻量级”运行状态, 判断服务器健康状况的核心指标从来不是进程数量的绝对值,而是CPU占用率、内存使用率、磁盘I/O以及网络带宽等资源数据,对于大多数Linux或Windows服务器而言,72个进程往往仅是操……

    2026年2月24日
    15100
  • 超分辨率服务器有哪些

    超分辨率服务器本质是面向AI推理场景的高性能GPU算力主机,选型核心锁定显存容量、带宽速率与服务商合规资质三要素,超分辨率任务的算力需求画像超分辨率不是简单“放大图片”,而是让模型“无中生有”地补全像素细节,这决定了服务器配置与传统网页服务器或者视频转码服务器有本质区别,推理密集型负载:以ESRGAN、Real……

    2026年8月17日
    1000
  • 主动注销域名有哪些后果,域名注销后还能恢复吗?

    主动注销域名是向注册商主动申请删除域名的合规操作,流程通常3-15个工作日,多数平台免费办理,注销后域名会进入约30天赎回期,届时想恢复往往要支付几十到几百元不等,主动注销域名流程:从提交到注销要多久?主动注销域名不是点一下删除就立刻消失,它有一套相对固定的生命周期,理解流程能帮你避开“以为删了其实没删”的尴尬……

    2026年9月15日
    500
  • 个人数据信息安全概念股有哪些?数据安全板块龙头股名单

    个人数据信息安全概念股的核心逻辑在于“合规驱动+技术落地”,当前市场热点聚焦于隐私计算、数据确权及国密算法领域,建议重点关注具备国资背景且拥有实际政务数据落地案例的企业,随着《数据安全法》与《个人信息保护法》的深入实施,数据已从单纯的生产要素转变为受严格监管的战略资源,对于投资者而言,理解这一板块不能仅停留在概……

    2026年5月29日
    4400
  • 服务器忘了密码怎么办?服务器密码忘记的解决方法

    面对服务器忘了密码的紧急情况,最核心的结论是:通过系统引导项修改或重置密码是最高效、损失最小的解决方案,无需重装系统,也不必恐慌数据丢失,绝大多数Linux和Windows服务器均提供了在单用户模式或恢复模式下重置凭据的原生机制,管理员只需掌握正确的操作步骤,即可在10分钟内恢复对服务器的完全控制, 判断服务器……

    2026年3月25日
    11900

发表回复

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