HEX编码

简介: HEX编码

HEX编码

  • 编码对象:ascill字符
  • 原理
  • Hex编码的原理就是将原来8位的二进制字节打断,分成两个4位的,并且在前面加上4个零

进行补位这样一个8位二进制字节就变成了2个8位的二进制字节,在将新得到的2个二进制字符进行16位进制转换

得到的新的16位字符串就是Hex的值,所以 二进制的[72, 69, 88] 《hex》 484558是相等的

  • 特点:
  • 编码后的字符串范围是0-9,a-f
  • 编码后的字符串长度是2的倍数
  • 代码
import re
def encrypt_hex(string):
  ciphertext = ""
  lis = []
  for i in string:
    if ord(i) > 127:
      return -1
    lis.extend(re.findall("\d{4}",("0"*8+bin(ord(i))[2::])[-8::]))
  for i in lis:
    ciphertext += hex(int(i,2))[2::]
  return ciphertext
def decrypt_hex(string):
  plaintext = ""
  # 个数一定是2的倍数
  if len(string) % 2 != 0:
    return -1
  lis = re.findall(".{2}", string)
  for i in lis:
    # 判断字符是0-f
    if ord(i[0]) < ord("0") or ord(i[0]) > ord("f") or ord(i[1]) < ord("0") or ord(i[1]) > ord("f"):
      return -1
    plaintext += chr(int(i[0],16)*16+int(i[1], 16))
    #plaintext += chr(int(("0"*4+bin(int(i[0],16))[2::])[-4::]+("0"*4+bin(int(i[1],16))[2::])[-4::],2))
  return plaintext
if __name__ == '__main__':
  ciphertext = encrypt_hex("I love you")
  plaintext = decrypt_hex(ciphertext)
  print(f"{plaintext}: {ciphertext}")
目录
相关文章
|
开发工具 git
Git教程:深入了解删除分支的命令
【4月更文挑战第3天】
2324 0
Git教程:深入了解删除分支的命令
|
4月前
|
人工智能 前端开发 JavaScript
SpringBoot实现网页消息推送的5种方法
本文详细介绍了在SpringBoot中实现网页消息推送的几种主流方案,包括短轮询、长轮询、SSE(Server-Sent Events)、WebSocket以及STOMP。每种方案各有优缺点,适用于不同的场景需求。短轮询简单易实现但效率低;长轮询提升了实时性但仍有限制;SSE适合单向通信且轻量高效;WebSocket支持全双工通信,适合高实时性要求的场景;STOMP基于WebSocket,提供更高级的消息传递功能。通过对比分析,开发者可根据业务需求、性能要求及浏览器兼容性选择最适合的技术方案,同时可结合多种技术实现优雅降级,优化用户体验。
926 57
|
6月前
|
人工智能 固态存储 iOS开发
5分钟搞定Photoshop 2025安装:官方下载+许可证激活避坑指南
Adobe Photoshop 2025 是 Adobe 公司推出的最新图像处理软件,广泛应用于平面设计、摄影后期和 UI 设计等领域。其核心功能包括智能 AI 工具(一键抠图、生成填充等)、高效工作流(优化图层管理与色彩调整)、跨平台兼容(支持 Windows 11 和 macOS 15)以及云协作功能(与 Adobe Creative Cloud 集成)。本文详细介绍软件的安装流程、系统要求、正版激活方法及常见问题解决方案,并提供扩展学习资源,帮助用户更好地掌握这款强大工具。
25334 2
|
7月前
|
Windows
windows查看端口占用情况
windows查看端口占用情况
335 9
|
10月前
|
安全 Java Linux
如何确定 Broken Pipe 异常是由网络问题还是其他原因引起的
Broken Pipe 异常可能由网络问题或其他原因引起。要确定具体原因,可以检查网络连接状态、防火墙设置和系统日志,同时分析异常发生时的上下文信息。
1363 5
|
存储 Python
链表中删除节点
链表中删除节点
|
机器学习/深度学习 存储 Kubernetes
如何将 Apache Airflow 用于机器学习工作流
Apache Airflow 是一个流行的平台,用于在 Python 中创建、调度和监控工作流。 它在 Github 上有超过 15,000 颗星,被 Twitter、Airbnb 和 Spotify 等公司的数据工程师使用。 如果您使用的是 Apache Airflow,那么您的架构可能已经根据任务数量及其要求进行了演变。 在 Skillup.co 工作时,我们首先有几百个 DAG 来执行我们所有的数据工程任务,然后我们开始做机器学习。
|
Java
一篇文章讲明白Java中四舍五入
一篇文章讲明白Java中四舍五入
215 0
|
10月前
|
人工智能 自然语言处理 自动驾驶
深入理解ChatGPT:下一代人工智能助手的开发与应用
【10月更文挑战第27天】本文深入探讨了ChatGPT的技术原理、开发技巧和应用场景,展示了其在语言理解和生成方面的强大能力。文章介绍了基于Transformer的架构、预训练与微调技术,以及如何定制化开发、确保安全性和支持多语言。通过实用工具如GPT-3 API和Fine-tuning as a Service,开发者可以轻松集成ChatGPT。未来,ChatGPT有望在智能家居、自动驾驶等领域发挥更大作用,推动人工智能技术的发展。
|
11月前
|
存储 监控 前端开发
如何修改网站后台登录
如何修改网站后台登录