Set1_Challenge1_Convert hex to base64

2024-05-06 21:58

本文主要是介绍Set1_Challenge1_Convert hex to base64,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Convert hex to base64

The string:

49276d206b696c6c696e6720796f757220627261696e206c696b65206120706f69736f6e6f7573206d757368726f6f6d

Should produce:

SSdtIGtpbGxpbmcgeW91ciBicmFpbiBsaWtlIGEgcG9pc29ub3VzIG11c2hyb29t

解题思路:
1. 以六个十六进制为一组;
2. 对每一组,拆分成三个字节;
3. 第一个字节通过右移2位获得第一个目标字符的Base64表位置,根据这个数值取到表上相应的字符,就是第一个目标字符;
4. 然后将第一个字节与0x03(00000011)进行与(&)操作并左移4位,接着第二个字节右移4位与前者相或(|),即获得第二个目标字节;
5. 再将第二个字节与0x0f(00001111)进行与(&)操作并左移2位,接着第三个字节右移6位与前者相或(|),获得第三个目标字节;
6. 最后将第三个字节与0x3f(00111111)进行与(&)操作即获得第四个目标字节;

以下是PHP解法;

function HexToBase64($value){$container = array();for($i = 0; $i < strlen($value); $i = $i + 6) {if(($i + 6) > strlen($value) && $i < strlen($value)) { $container[] = substr($value, $i);   } else {$container[] = substr($value, $i, 6);   }}$result = array();foreach($container as $unit) {$result[] = Unit_convert($unit); }return implode("", $result);
}function Unit_convert($unit){$map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";$len = strlen($unit);$unit = base_convert($unit, 16 ,2);$unit = substr("0000000000000000000000" . $unit, -24);if($len == 2) {return $map[bindec($unit>>2)] .$map[bindec(($unit & 0x03)<<4)] ."==";    } else if($len == 4) {$unit_1 = bindec(substr($unit, 0, 8));$unit_2 = bindec(substr($unit, 8));return $map[($unit_1>>2)] .$map[(($unit_1 & 0x03)<<4) | ($unit_2>>4)] .$map[(($unit_2 & 0x0f)<<2)] ."=";    } else if($len == 6) {$unit_1 = bindec(substr($unit, 0, 8));$unit_2 = bindec(substr($unit, 8, 8));$unit_3 = bindec(substr($unit, 16, 8));return $map[($unit_1>>2)] .$map[(($unit_1 & 0x03)<<4) | ($unit_2>>4)] .$map[(($unit_2 & 0x0f)<<2) | ($unit_3>>6)] .$map[($unit_3 & 0x3f)]; }
}

这篇关于Set1_Challenge1_Convert hex to base64的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/965493

相关文章

Java文件与Base64之间的转化方式

《Java文件与Base64之间的转化方式》这篇文章介绍了如何使用Java将文件(如图片、视频)转换为Base64编码,以及如何将Base64编码转换回文件,通过提供具体的工具类实现,作者希望帮助读者... 目录Java文件与Base64之间的转化1、文件转Base64工具类2、Base64转文件工具类3、

使用Python实现图片和base64转换工具

《使用Python实现图片和base64转换工具》这篇文章主要为大家详细介绍了如何使用Python中的base64模块编写一个工具,可以实现图片和Base64编码之间的转换,感兴趣的小伙伴可以了解下... 简介使用python的base64模块来实现图片和Base64编码之间的转换。可以将图片转换为Bas

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrl+z 如果不小心撤销多了,可以用 Ctrl+Shift+Z 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c++的标准程序库中的string,头文件是#include<string> 这是base64的加密函数 std::string

Base64编码 及 在HTML中用Base编码直接显示图片或嵌入其他文件类型

1.为什么要用到BASE64编码的图片信息      Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64 主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输。由于一些二进制字符在传输协议中属于控制字符,不能直接传送需要转换一下。最常见的用途是作为电子邮件或WebService附件的传输编码.  2.base64编码定义    目前的internet

王立平-Android中对图像进行Base64编码

// ------------------base64-------------------// public String bitmaptoString(Bitmap bitmap) { // 将Bitmap转换成字符串 String string = null; ByteArrayOutputStream bStream = new ByteArrayOutputStream(

org.springframework.core.convert.ConversionFailedException

适用: 1.你在springmvc.xml中写了静态资源处理<mvc:resources location="/" mapping="/**"></mvc:resources> 2.你在springmvc.xml中写了日期类型转换 解决方法: 首先检测你的spring版本,然后 1.spring3.0后将<mvc:resources location="/" mapping="/**">

ValueError: could not convert string ‘date‘ to float64 at row 0, column 1.

ValueError:无法将字符串“date”转换为第0行第1列的float64。 解决办法: 通过以下代码检查自己的数据,查找问题,逐一改正。 import csvdef find_blank_or_invalid_cells(file_path):blank_cells = []invalid_cells = []with open(file_path, 'r', newline=

wstring_convert

char*和wchar_t*之间的相互转换。 W2A及A2W 要点: - USES_CONVERSION; - W2A及A2W - 只能用在c++代码中。 代码: #include wstring_convert 参考: http://www.cplusplus.com/reference/locale/wstring_convert/ 最新的C++编译器才行。 该链接中的

Windows bat脚本学习七(从hex文件中获取bin大小)

一、简介          有关hex文件的介绍,直接参考这篇文章:Hex文件解析_hex文件详解-CSDN博客 二、代码         废话不多,直接上代码: @echo offchcp 65001setlocal enabledelayedexpansionset code=0123456789ABCDEFset hex_file=origin.hexif exist %hex