【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-md5?

举报
剑豪 发表于 2023/06/21 13:53:28 2023/06/21
【摘要】 十六进制转字符串的原理是将每两个十六进制数转化为一个ASCII字符。例如,"48 65 6C 6C 6F" 转换为 "Hello"。

前言

一、原理:
  Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L)。即byte用十六进制表示只占2位。 同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。
  根据以上原理,就可以将byte数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte数组了。  
  二 、16进制的意义:
  1、用于计算机领域的一种重要的数制。
  2、对计算机理论的描述,计算机硬件电路的设计都是很有益的。比如逻辑电路设计中,既要考虑功能的完备,还要考虑用尽可能少的硬件,十六进制就能起到一些理论分析的作用。比如四位二进制电路,最多就是十六种状态,也就是一种十六进制形式,只有这十六种状态都被用上了或者尽可能多的被用上,硬件资源才发挥了尽可能大的作用。
  3、十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数。

例如,"48 65 6C 6C 6F" 转换为 "Hello"。

数字符号0的ASCII码值的十六进制数表示为30H。 数字符号的ASCII码值: 0--9的ASCII码是连续的,十进制ASCII码依次为48-57,现在进项转换就和一变为十六进制: 0的ASCII码值 =48(十进制) =3*16 =30H(十六进制)。

一、md5?

1.打开题目

在这里插入图片描述

2.解题

看题目得到16进制字符串

666c61677b616537333538376261353662616566357d

观察一下这一串字符 (1)数字为0-9,字母中,字符没有超过F。 (2)字符两两结合对应的十进制小于256。注:FF(十六进制)=255(十进制)

因此,猜测为16进制 用在线解密网站转码一下~

在线网站: https://www.bejson.com/convert/ox2str/

在这里插入图片描述 得到flag:flag{ae73587ba56baef5}

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。