当前位置: 首页 > news >正文

每日脚本学习5.10 - XOR脚本

xor运算的简介

异或就是对于二进制的数据可以 进行同0异1 

简单的演示 : 

结果是 这个就是异或

异或的作用 1、比较两数是否相等  2、可以进行加密

加密就是需要key 

明文 :0b010110

key : 0b1010001

这个时候就能进行加密

明文 ^ key=密文

还有这个加密比较方便  就是解密也是这个逻辑

考虑一个问题: 如果这个key是比密文小的该怎么办  就是明文和key 不等的时候 我们就需要使用密码本模式(循坏使用密钥)

知道这个之后可以进行脚本的书写:

def xor_cipher(data: bytes, key: bytes) -> bytes:  #xor 操作的对象就是二进制的字节流"""使用 XOR 算法对数据进行加密或解密(XOR 加密解密是同一个操作)参数:data (bytes): 要加密或解密的数据key (bytes): 加密或解密使用的密钥返回:bytes: 加密或解密后的结果"""# key_bytes = key.encode('utf-8')  密钥进行utf8 转换   为了解决一些解密之后出现中文的情况result = bytearray()  # 这个的结果是字节流key_length = len(key)   # 获取长度 for i in range(len(data)):result.append(data[i] ^ key[i % key_length])   #密码本模式  解决data的数据比key大的情况  循坏使用密钥  return bytes(result)        #返回的数据是 字节# 示例用法
if __name__ == "__main__":# 示例数据和密钥(实际使用时请替换为真实数据)plaintext = b"Hello, World!"  # 要加密的明文 使用 b '' 转为字节key = b"SecretKey"             # 密钥# 加密encrypted = xor_cipher(plaintext, key)print(f"加密后: {encrypted.hex()}")# 解密(使用相同的密钥和算法)decrypted = xor_cipher(encrypted, key)print(f"解密后: {decrypted.decode('utf-8')}")  

http://www.dtcms.com/a/182783.html

相关文章:

  • 论敏捷软件开发及其应用
  • 关于web3
  • PyTorch API 2 - 混合精度、微分、cpu、cuda、可视化
  • 模拟太阳系(C#编写的maui跨平台项目源码)
  • Maven 插件配置分层架构深度解析
  • 3.优惠券秒杀
  • 8051模板移植
  • 深度学习篇---姿态检测实现
  • VSCode-插件:codegeex:ai coding assistant / 清华智普 AI 插件
  • 【计算机视觉】3DDFA_V2中表情与姿态解耦及多任务平衡机制深度解析
  • OpenLayers 精确经过三个点的曲线绘制
  • 学习黑客5 分钟深入浅出理解Linux进程管理
  • HDFS 常用基础命令详解——快速上手分布式文件系统
  • 巡检机器人数据处理技术的创新与实践
  • uniapp+vue3+firstUI时间轴 提现进度样式
  • # YOLOv3:深度学习中的目标检测利器
  • 高效Python开发:uv包管理器全面解析
  • C++--类的构造函数与初始化列表差异
  • 第十八章,入侵检测/防御系统(IDS/IPS)
  • JSON|cJSON 介绍以及具体项目编写
  • C++ 关联式容器:map,multimap,set,multiset
  • yarn npm pnpm
  • 如何快速分享服务器上的文件
  • 详解多协议通信控制器
  • 【字节拥抱开源】字节豆包团队开源首发 Seed-Coder 大模型
  • 04 mysql 修改端口和重置root密码
  • 软件测试——用例篇(3)
  • Web3 初学者学习路线图
  • 20250510-查看 Anaconda 配置的镜像源
  • navicat112_premium_cs_x64.exe PatchNavicat.exe