http://www.astro.keele.ac.uk/oldusers/rno/Computing/File_magic.html
http://en.wikipedia.org/wiki/List_of_file_signatures
File type
Typical
extension
Hex digits
xx = variable
Ascii digits
. = not an ascii char
Bitmap format |
.bmp |
42 4d |
BM |
FITS format |
.fits |
53 49 4d 50 4c 45 |
SIMPLE |
GIF format |
.gif |
47 49 46 38 |
GIF8 |
Graphics Kernel System |
.gks |
47 4b 53 4d |
GKSM |
IRIS rgb format |
.rgb |
01 da |
.. |
ITC (CMU WM) format |
.itc |
f1 00 40 bb |
.... |
JPEG File Interchange Format |
.jpg |
ff d8 ff e0 |
.... |
NIFF (Navy TIFF) |
.nif |
49 49 4e 31 |
IIN1 |
PM format |
.pm |
56 49 45 57 |
VIEW |
PNG format |
.png |
89 50 4e 47 |
.PNG |
Postscript format |
.[e]ps |
25 21 |
%! |
Sun Rasterfile |
.ras |
59 a6 6a 95 |
Y.j. |
Targa format |
.tga |
xx xx xx |
... |
TIFF format (Motorola - big endian) |
.tif |
4d 4d 00 2a |
MM.* |
TIFF format (Intel - little endian) |
.tif |
49 49 2a 00 |
II*. |
X11 Bitmap format |
.xbm |
xx xx |
|
XCF Gimp file structure |
.xcf |
67 69 6d 70 20 78 63 66 20 76 |
gimp xcf |
Xfig format |
.fig |
23 46 49 47 |
#FIG |
XPM format |
.xpm |
2f 2a 20 58 50 4d 20 2a 2f |
/* XPM */ |
File type
Typical
extension
Hex digits
xx = variable
Ascii digits
. = not an ascii char
Bzip |
.bz |
42 5a |
BZ |
Compress |
.Z |
1f 9d |
.. |
gzip format |
.gz |
1f 8b |
.. |
pkzip format |
.zip |
50 4b 03 04 |
PK.. |
File type
Typical
extension
Hex digits
xx = variable
Ascii digits
. = not an ascii char
TAR (pre-POSIX) |
.tar |
xx xx |
(a filename) |
TAR (POSIX) |
.tar |
75 73 74 61 72 |
ustar (offset by 257 bytes) |
File type
Typical
extension
Hex digits
xx = variable
Ascii digits
. = not an ascii char
MS-DOS, OS/2 or MS Windows |
|
4d 5a |
MZ |
Unix elf |
|
7f 45 4c 46 |
.ELF |
File type
Typical
extension
Hex digits
xx = variable
Ascii digits
. = not an ascii char
pgp public ring |
|
99 00 |
.. |
pgp security ring |
|
95 01 |
.. |
pgp security ring |
|
95 00 |
.. |
pgp encrypted data |
|
a6 00 |
¦. |
由于二进制文件有自己的magic number,只需要根据magic number则可以判断是否为image。
def is_a_media_resource body
data = Base64.decode64 body
bytes = data.bytes.to_a
bytes = bytes[0...9]
hex_bytes = []
bytes.each{|e| hex_bytes << e.to_s(16)}
return is_media? hex_bytes
end
经过base64解密后,提取前9个字节进行比对,因为magic number最长是9个字节。
module ReceiverHelper
MAGIC_NUMBERS ={
"PNG"=>["89","50","4e","47"],
"GIF"=>["47","49","46","38"],
"FITS"=>["53","49","4d","50","4c", "45"],
"GKS"=>["47","4b","53","4d"],
"RGB"=>["01","da"],
"ITC"=>["f1","00" ,"40","bb"],
"JPG"=>["ff","d8","ff","e0"],
"NIF"=>["49","49","4e","31"],
"PM"=>["56","49","45","57"],
"EPS"=>["25","21"],
"RAS"=>["59", "a6", "6a", "95"],
"TIF_BIGENDIAN"=>["4d", "4d", "00", "2a"],
"TIF_LITTLEEDIAN"=>["49" ,"49", "2a", "00"],
"XCF"=>["67", "69", "6d", "70", "20", "78", "63", "66", "20", "76"],
"FIG"=>["23", "46", "49", "47"],
"XPM"=>["2f", "2a", "20", "58", "50", "4d", "20", "2a", "2f"]
}
def is_media? data
MAGIC_NUMBERS.each_pair{|type,numbers|
if equals(data,numbers)
return true
end
}
false
end
private
def equals data,png_magic_numbers
data[0...png_magic_numbers.length] == png_magic_numbers
end
end
分享到:
相关推荐
在加密过程中,该工具可能采用了某种加密算法对Base64编码后的字符串进行加密,增加了一层额外的安全防护。 【描述解析】 "图片与Base64加密码字符串相互转换工具 带源码" 意味着提供给用户的不仅仅是可执行的应用...
- **可打印性**:Base64编码后的字符串只包含ASCII字符,可以在任何支持ASCII的平台上无误地显示和传输。 - **避免转义**:由于不包含控制字符,Base64编码可以避免HTTP、JSON等协议中的转义问题,简化数据处理。 - ...
接着,我们通过`Base64.getDecoder().decode()`将编码后的字节数组解码回原始字符串。 【压缩包子文件的文件名称列表】: "java开发中遇到的问题:rt.jar访问限制.doc、BASE64加密解密 方法.txt" 这里的文件名暗示...
例如,敏感数据可以先被转换为十六进制字符串,然后用Base64加密,最后存储在数据库的Blob字段中。当需要使用时,再进行解密和反转换。在文件`nvo_base64.sru`中,可能包含了实现这些功能的源代码或组件,供开发者...
总结来说,Java中的图片Base64加密解密涉及了二进制数据与ASCII字符串之间的转换,这对于在网络上传输或存储非文本数据(如图像)非常有用。虽然`sun.misc`包中的类已不再推荐,但理解其工作原理有助于更好地理解和...
在描述中提到,此工具专注于处理文本和字符串的Base64编码和解码,而不是通常针对文件和图片的应用。在处理文本时,首先需要将文本转换为字节序列,通常是根据指定的字符编码进行,比如UTF-8。UTF-8是一种非常常见的...
本文将深入探讨如何将图片转换为二进制格式,然后生成Base64编码字符串,以及如何将这些字符串重新转换回图片。这个过程在很多场景下都有应用,比如在网络上传输图片数据,或者在数据库中存储图片。 首先,我们需要...
Base64编码能够确保数据在传输过程中不被篡改,因为它是通过特定算法将二进制数据转换为一种标准格式的文本字符串。本文将详细讲解如何在SQL Server 2005中实现Base64的加密和解密功能。 一、Base64编码原理 Base64...
使用RSA对字符串进行加密,但是加密以后是一个byte[],然后使用Base64进行了对于byte[]的二次加密,这样就是一个字符串,可以直接进行http的传输而不用头疼了。 注释:关于包名的问题请自己重新新建资源拷贝就可以了
例如,可以先对图片进行某种加密,然后将加密后的结果转换为Base64字符串,以使数据更安全地在网络上传输。解密时,需要先对Base64字符串解码回原始字节,然后再进行解密操作,还原出原始的图片数据。 4. **使用...
在WinForm应用程序中,你可以创建用户界面,提供输入框让用户输入或粘贴Base64字符串,然后通过按钮触发加密或解密操作。可以利用`BackgroundWorker`组件来异步执行这些计算密集型任务,避免阻塞UI线程。 总的来说...
4. **图片解密**:这里的“解密”可能指的是从BASE64字符串恢复到原始图片数据的过程。这个过程称为解码,即将BASE64编码的字符串转换回其原始二进制形式。 5. **数据库操作**:在数据库中插入和检索Blob类型的字段...
字符串加密与解密(Base64)字符串加密与解密(Base64)字符串加密与解密(Base64)字符串加密与解密(Base64)字符串加密与解密(Base64)字符串加密与解密(Base64)
例如,如果你有一个二进制格式的图片文件,你可能想要将其转换为Base64字符串,以便于在网络应用中直接嵌入图片,或者在数据库中以文本形式存储图片数据。 首先,理解基础概念是至关重要的。Base64是一种编码算法,...
在“base64串解码为文件demo”这个示例中,可能包含了如何使用封装好的DLL来对一个已编码的BASE64字符串进行解码,并将解码后的数据写入到文件中的步骤。通常,这个过程包括以下步骤: 1. 调用DLL中的解码函数,...
Base64安全性低?...Base64加密后的字符串在URL中不安全,想去掉特殊符号?这里支持。 想在解密失败返回统一字符?这里支持。告诉我还有什么是你想要的。这里都有,如果好用,不介意的请在下面评论一番,谢谢
在微信小程序中,当需要在网络上传输非ASCII字符,例如图片或PDF等二进制文件时,通常会先将其转化为Base64字符串。Base64编码将每3个字节的数据转换成4个可打印字符,这样可以保证数据在传输过程中不被破坏。在微信...
LabVIEW实现Base64加密解密程序源码,可以作为子VI直接调用,非常方便,经过测试没有问题。base64是一种用64个字符来表示任意二进制数据的方法。base 64编码可以将任意一组字节转换为较长的常见文本字符序列,从而...
1. `Encoder.encodeToString(byte[])`: 这个方法接受一个字节数组作为输入,返回一个经过BASE64编码的字符串。它将二进制数据转换成可读的ASCII字符串,方便在网络传输或存储。 2. `Decoder.decode(String encoded...
2. `decode`: 接受一个Base64编码的字符串,返回解码后的原始字符串或二进制数据。 3. 错误处理:在解码过程中遇到无效的Base64字符时,能够适当地处理错误。 4. 兼容性:确保在各种JavaScript环境中,包括浏览器和...