当前位置: 首页 > 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')}")  

相关文章:

  • 论敏捷软件开发及其应用
  • 关于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 介绍以及具体项目编写
  • 贵州省总工会党组成员、副主席梁伟接受审查调查
  • 招商蛇口:今年前4个月销售额约498.34亿元
  • 71岁导演詹姆斯・弗雷病逝,曾执导《纸牌屋》、麦当娜MV
  • 【社论】以法治力量促进民企长远健康发展
  • 美政府被曝下令加强对格陵兰岛间谍活动,丹麦将召见美代办
  • 司法部:持续规范行政执法行为,加快制定行政执法监督条例