二、网络安全常见编码及算法-(1)
本文把加密编码类型分类四类:哈希算法、编码方式、加密算法和其他:
分类 | 核心目标 | 技术特点 | 安全性 | 可逆性 | 输出长度 | 应用场景 |
---|---|---|---|---|---|---|
哈希算法 | 将任意数据转换为固定长度的唯一值(哈希值),用于数据完整性校验或身份验证。 | 单向计算(不可逆)固定长度输出(如MD5为128位)微小输入变化导致输出剧烈变化(雪崩效应) | 部分算法(如MD5)不安全,强哈希仍可用。 | 不可逆(单向)。 | 固定长度 | 数据校验、身份验证。密码存储(如bcrypt哈希密码)文件完整性校验(如校验下载文件的MD5值)数字签名(如区块链中的哈希指针) |
编码方式 | 将数据转换为特定格式(如文本、二进制)以便传输或存储,不涉及安全性。 | 可逆转换(可解码回原始数据)无安全性设计(如Base64仅用于数据格式转换)输出长度通常与输入相关 | 无安全性,仅用于数据格式转换可能被用于混淆数据(如Base64),但可轻易解码 | 可逆(双向)。 | 与输入长度相关 | 数据传输、协议兼容。数据传输(如Base64编码二进制数据为文本)URL参数传递(如URL编码特殊字符)协议兼容(如Hex编码用于硬件通信) |
加密算法 | 将数据转换为密文,确保只有授权方能解密,核心目标是数据保密性。 | 可逆转换(需密钥解密)输出长度通常与输入长度相关(如AES)支持对称/非对称加密 | 现代算法(如AES)安全,但需正确使用 | 可逆(需密钥)。 | 与输入长度相关 | 数据保密、安全通信。敏感数据传输(如HTTPS中的TLS加密)本地数据存储(如加密数据库文件)身份认证(如非对称加密密钥交换) |
其他 | 针对特定应用场景(如搜索、协议处理)提供辅助功能,不直接属于加密或编码范畴。 | 功能多样化(如Elasticsearch用于搜索优化)可能依赖其他技术(如URL编码需配合HTTP协议) | 不涉及安全性设计可能间接影响安全(如Elasticsearch需配合访问控制) | 根据具体功能决定(如Elasticsearch不可逆,但非加密/编码)。 | (如Elasticsearch输出长度取决于数据量)。 | 特定应用场景(如搜索、调试)。搜索优化(如Elasticsearch用于全文检索)协议处理(如URL编码配合HTTP)开发调试(如Hex编码查看二进制数据) |
一、哈希算法
1、MD5
-
作用:生成固定长度的哈希值,用于校验数据完整性。
-
设计目的:MD5是一种哈希算法,用于生成数据的128位哈希值(通常表示为32个十六进制字符)。
-
应用场景:
- 文件完整性校验(如软件下载时的MD5校验)。
- 密码存储(不推荐,因为安全性较低)。
-
安全性:
- MD5已被证明存在严重的安全漏洞,容易受到碰撞攻击(即可以找到两个不同的输入生成相同的MD5哈希值)。
- 不推荐用于安全敏感的场景(如密码存储或数字签名)。
-
典型特征:
- 32个十六进制字符(0-9, a-f),通常为小写,无分隔符(如
d41d8cd98f00b204e9800998ecf8427e
)。 - 确定性:一个原始数据的MD5值是唯一的,同一个原始数据不可能会计算出多个不同的MD5值。
- 碰撞性:原始数据与其MD5值并不是一一对应的,有可能多个原始数据计算出来的MD5值是一样的,这就是碰撞。
- 不可逆:也就是说如果告诉你一个MD5值,你是无法通过它还原出它的原始数据的,这不是你的技术不够牛,这是由它的算法所决定的。因为根据第4点,一个给定的MD5值是可能对应多个原始数据的,并且理论上讲是可以对应无限多个原始数据,所有无法确定到底是由哪个原始数据产生的。
- 32个十六进制字符(0-9, a-f),通常为小写,无分隔符(如
-
如何识别:
- 32个十六进制字符(0-9, a-f),通常为小写,无分隔符(如
d41d8cd98f00b204e9800998ecf8427e
)
- 32个十六进制字符(0-9, a-f),通常为小写,无分隔符(如
-
常用解密网站:
md5在线解密 在线加密
www.cmd5.com
-
对字符串
admin@123
进行处理后的结果及简要分析:-
结果:
-
分析:MD5 是一种哈希算法,输出为 32 位十六进制字符串。它已被证明存在安全漏洞,不推荐用于安全敏感场景。
-
2、SHA-1
-
设计目的:SHA-1是一种哈希算法,用于生成数据的160位哈希值(通常表示为40个十六进制字符)。
-
应用场景:
- 曾广泛用于SSL/TLS证书、Git版本控制系统等。
- 类似MD5,也用于文件完整性校验。
-
安全性:
- SHA-1同样存在碰撞攻击漏洞,2017年Google宣布成功生成了SHA-1的碰撞实例。
- 目前已被认为不安全,不推荐用于安全敏感的场景。
-
如何识别:
- 40个十六进制字符(0-9, a-f),通常为小写,无分隔符(如
da39a3ee5e6b4b0d3255bfef95601890afd80709
)。
- 40个十六进制字符(0-9, a-f),通常为小写,无分隔符(如
-
常用解密网站:SHA1在线加密工具_同时包含SHA224_SHA256_SHA384_SHA512加密算法_蛙蛙工具
-
对字符串
admin@123
进行处理后的结果及简要分析:- 结果:
23d42f5f3f66498b2c8ff4c20b8c5ac826e47146
- 分析:SHA-1 也是一种哈希算法,输出为 40 位十六进制字符串。虽然比 MD5 更安全,但同样已被认为不够安全,不推荐用于新系统。
- 结果:
3、HMAC
-
作用:基于哈希的消息认证码,结合密钥和哈希算法确保数据完整性和真实性。
-
特点:需配合密钥使用,输出长度取决于所选哈希算法(如HMAC-SHA256)。
-
设计目的:HMAC是一种基于哈希函数的消息认证码算法,用于验证数据的完整性和真实性。它结合了哈希函数和一个密钥。
-
应用场景:
- 数据完整性校验(如API请求签名)。
- 身份验证(如网络通信中的消息认证)。
-
安全性:
- HMAC的安全性依赖于底层哈希函数的选择(如HMAC-SHA256比HMAC-MD5更安全)。
- 这种算法就是在前面的基础上加密的基础上引入了秘钥,而秘钥又只有传输双方才知道。即使底层哈希函数存在漏洞,HMAC仍然可以提供较高的安全性,因此它依赖于密钥的保密性。
-
如何识别:
输出格式与底层哈希函数一致(如HMAC-SHA256输出64字符,HMAC-MD5输出32字符)(输出的位数取决于底层的哈希函数)。
-
**常用解密网站:**https://www.sojson.com/hash.html
-
对字符串
admin@123
进行处理后的结果及简要分析:- 结果:取决于密钥和算法(如 HMAC-SHA256)
- 分析:HMAC 是一种基于哈希的消息认证码,需结合密钥进行计算。结果取决于密钥,无法直接给出固定输出。
二、编码方式
1、Base64
- 作用:将二进制数据转换为ASCII字符串,便于文本传输。
- 特点:使用A-Z、a-z、0-9、
+
、/
编码,输出长度约为原始数据的133%。 - 设计目的:将二进制数据转换为ASCII可打印字符,便于在文本协议中传输。
- 应用场景:
- HTTP请求/响应中嵌入图片、文件等二进制数据(如Data URL)。
- 电子邮件附件的MIME编码。
- 数据库中存储二进制数据(如图片)为文本格式。
- 安全性:
- 仅是编码,非加密,易被解码,不适合传输敏感信息。
- 需配合加密算法(如AES)使用以确保安全性。
- 输出格式:
- 由大写字母(A-Z)、小写字母(a-z)、数字(0-9)以及
+
和/
组成。 - 若数据长度不是3的倍数,末尾用
=
填充。
- 由大写字母(A-Z)、小写字母(a-z)、数字(0-9)以及
- 典型特征:
- 输出长度约为原始数据的133%(每3字节转为4字符)。
- 常用解密网站:在线Base64编码解码工具_蛙蛙工具
- 对字符串
admin@123
进行处理后的结果及简要分析: - 结果:
YWRtaW5AMTIz
- 分析:Base64 将二进制数据转换为 ASCII 字符串,适用于文本传输。
2、Base58
-
作用:排除易混淆字符,适用于比特币地址等场景。
-
特点:使用A-Z、a-z、0-9中排除0、O、I、l的字符集。
-
设计目的:优化可读性,减少易混淆字符,适用于需要人工输入的场景。
-
应用场景:
- 加密货币地址(如比特币钱包地址)。
-
安全性:
- 仅是编码,非加密,安全性依赖于底层加密算法。
-
输出格式:
- 由大小写字母及数字组成,但排除了易混淆字符(如0、O、I、l)。
-
典型特征: 在线Base58编码解码
- 比Base64更紧凑,减少输入错误的可能性。
-
常用解密网站:
-
对字符串
admin@123
进行处理后的结果及简要分析:-
结果:
2EuGn5sbXLkaN
-
分析:Base58 排除易混淆字符,适用于比特币地址等场景。
-
3、Base32
- 作用:将二进制数据转换为可打印字符,适用于URL参数传递等场景。
- 特点:使用A-Z和数字2-7,输出长度约为原始数据的160%。
- 设计目的:提供高可读性的编码,适用于需要人类可读的场景。
- 应用场景:
- 生成可读、不易出错的密钥。
- TOTP(基于时间的一次性密码算法)中生成身份验证代码。
- 安全性:
- 仅是编码,非加密,安全性依赖于底层加密算法。
- 输出格式:
- 由大写字母(A-Z)和数字2-7组成。
- 若数据长度不是40比特的倍数,用
=
填充。
- 典型特征:
- 比Base64多占用约20%的空间,但更易读。
- 常用解密网站:Base16 Base32 Base58 Base62 Base64 Base85 Base91 编码/解码 - 锤子在线工具
- 对字符串
admin@123
进行处理后的结果及简要分析:- 结果:
MFSG22LOIAYTEMY=
- 分析:Base32 由大写字母和数字 2-7 组成,输出长度约为原数据的 160%。
- 结果:
4、Base16(Hex编码)
- 作用:将每个字节转换为两位十六进制数。
- 特点:输出长度为原始数据的两倍,便于人类阅读和计算机处理。
- 设计目的:将二进制数据转换为十六进制字符串,便于人类阅读和计算机处理。
- 应用场景:
- 调试和日志记录中显示二进制数据。
- 安全性:
- 仅是编码,非加密,安全性依赖于底层加密算法。
- 输出格式:
- 由数字0-9和字母A-F组成。
- 典型特征:
- 编码后的数据量是原数据的两倍。
- 常用解密网站:Base16 Base32 Base58 Base62 Base64 Base85 Base91 编码/解码 - 锤子在线工具
- 对字符串
admin@123
进行处理后的结果及简要分析:- 结果:
61646d696e40313233
- 分析:将每个字节转换为两位十六进制数,输出长度为原数据的两倍。
- 结果:
5、Base85
- 作用:使用更大的字符集,编码后的数据长度更短。
- 特点:适用于需要高效传输的场景。
- 设计目的:将二进制数据转换为ASCII字符,减少编码后的数据长度,适用于需要高效传输的场景。
- 应用场景:
- 在URL中传输大量二进制数据。
- 安全性:
- 仅是编码,非加密,安全性依赖于底层加密算法。
- 输出格式:
- 使用ASCII字符集中的所有字符,除了"t"、“。”、" "这四个字符外。
- 典型特征:
- 编码后的数据长度相对较短,适用于传输大量二进制数据。
- 结果:
Bo!uDt[~>F
(示例结果,实际输出可能因具体实现和填充方式而异)
- 常用解密网站:Base16 Base32 Base58 Base62 Base64 Base85 Base91 编码/解码 - 锤子在线工具
- 对字符串
admin@123
进行处理后的结果及简要分析:- 结果:@:X4hDEop31B
- 分析:Base85 使用更大的字符集,编码后的数据长度更短,适用于需要高效传输的场景。
6、Base100
-
作用:使用Emoji表情等100个字符进行编码。
-
特点:适用于需要更短编码长度的场景,但兼容性较差。
-
设计目的:使用更大的字符集(100个字符)进行编码,进一步减少编码后的数据长度。
-
应用场景:
- 特定的高效数据传输需求(非广泛使用)。
-
安全性:
- 仅是编码,非加密,安全性依赖于底层加密算法。
-
输出格式:
- 由100个可打印字符组成(具体字符集取决于实现)。
-
常用解密网站:BASE100编码解码 - Bugku CTF平台
-
典型特征:
- 编码后的数据长度更短,但字符集较大,可能增加解码复杂度。
-
对字符串
admin@123
进行处理后的结果及简要分析:
7、URL编码
- 作用:将URL中的特殊字符转换为
%xx
形式。 - 特点:确保URL在传输过程中不会出现错误或混淆。
- 设计目的:将URL中的特殊字符转换为特定格式(如
%xx
),确保URL在传输过程中不会出现错误或混淆。 - 应用场景:
- 编码URL参数、表单数据等,确保数据正确传输和解析。
- 处理用户输入数据,避免特殊字符导致的解析错误。
- 安全性:仅是编码,不提供加密,需配合加密算法使用以确保安全性。
- 输出格式:将非字母数字字符转换为
%xx
形式,xx
为字符的ASCII码的十六进制表示。 - 典型特征:可确保URL中的特殊字符被正确传输和解析,避免潜在安全风险。
- 常用加解密网站:https://www.sojson.com/encodeurl.html
- 对字符串
admin@123
进行处理后的结果及简要分析:- 结果:
admin%40123
- 分析:URL 编码将特殊字符转换为
%xx
形式,确保 URL 在传输过程中不会出现错误。
- 结果:
8、Hex编码
-
作用:将二进制数据转换为十六进制字符串。
-
特点:便于人类阅读和计算机处理,广泛应用于硬件调试、网络通信等场景。
-
设计目的:将二进制数据转换为十六进制字符串,便于人类阅读和计算机处理。
-
应用场景:
- 硬件调试、网络通信、加密解密等需要直接查看或编辑二进制数据的场合。
-
安全性:仅是编码,不提供加密,安全性依赖于底层加密算法。
-
输出格式:由数字
0-9
和字母A-F
组成。 -
典型特征:编码后的数据量是原数据的两倍,可逆性强。
-
常用加解密网站:https://www.107000.com/T-Hex
-
对字符串
admin@123
进行处理后的结果及简要分析:- 结果:
61646d696e40313233
- 分析:Hex 编码将每个字符转换为对应的 16 进制值,适用于需要直接查看或编辑二进制数据的场合。
- 结果:
9、Escape编码/加密
- 作用:在字符串处理中逃避特殊符号。
- 特点:避免特殊字符被直接解析,而是作为普通字符处理。
- 设计目的:在字符串处理中逃避特殊符号,避免被直接解析,而是作为普通字符处理。
- 应用场景:
- 处理字符串中的特殊字符(如引号、反斜杠等)。
- 处理正则表达式、文件路径、Shell编程中的特殊符号。
- 安全性:不提供加密,仅用于字符转义。
- 输出格式:在特殊字符前添加反斜杠
\
,如\"
表示双引号。 - 典型特征:确保特殊字符在字符串中被正确处理,避免语法错误。
- 常用解密网站:Escape加密/解密-在线工具箱
- 对字符串
admin@123
进行处理后的结果及简要分析:- 结果:
admin@123
- 分析:Escape 编码在特殊字符前添加反斜杠
\
,如\@
表示@
。
- 结果:
10、Unescape解码/解密
- 作用:将Escape编码后的字符串解码为原始形式。
- 特点:还原Escape编码后的字符串,以便进行后续处理。
- 设计目的:将Escape编码后的字符串解码为原始形式。
- 应用场景:
- 还原Escape编码后的字符串,以便进行后续处理。
- 安全性:不提供解密,仅用于字符反转义。
- 输出格式:将
\
开头的特殊字符还原为原始字符。 - 典型特征:与Escape编码互为逆过程。
- 常用解密网站:在线Escape编码、加密|在线Unescape解码、解密|%u编码、解码–查错网
11、%u编码
- 作用:将Unicode字符编码为
%uXXXX
形式。 - 特点:用于URL或特定协议中传输Unicode字符。
- 设计目的:将Unicode字符编码为
%uXXXX
形式,用于URL或特定协议中传输Unicode字符。 - 应用场景:
- 在URL中传输非ASCII字符(如中文)。
- 安全性:仅是编码,不提供加密。
- 输出格式:每个Unicode字符编码为
%u
后跟4位十六进制数。 - 典型特征:确保Unicode字符在特定协议中正确传输。
- 常用解密网站:在线Escape编码、加密|在线Unescape解码、解密|%u编码、解码–查错网
- 对字符串
admin@123
进行处理后的结果及简要分析:- 结果:
%u0061%u0064%u006d%u0069%u006e%u0040%u0031%u0032%u0033
- 分析:
%u
编码将 Unicode 字符编码为%uXXXX
形式,用于 URL 或特定协议中传输 Unicode 字符。
- 结果:
12、%u解码
- 作用:将
%uXXXX
编码的Unicode字符解码为原始字符。 - 特点:还原
%u
编码后的Unicode字符,以便正确显示或处理。 - 设计目的:将
%uXXXX
编码的Unicode字符解码为原始字符。 - 应用场景:
- 还原
%u
编码后的Unicode字符,以便正确显示或处理。
- 还原
- 安全性:不提供解密,仅用于字符解码。
- 输出格式:将
%uXXXX
还原为对应的Unicode字符。 - 典型特征:与
%u
编码互为逆过程。 - 常用解密网站:在线Escape编码、加密|在线Unescape解码、解密|%u编码、解码–查错网
13、HTML实体编码
- 作用:将HTML中的特殊字符转换为实体编码形式。
- 特点:确保HTML文档正确解析和显示,防止XSS等安全风险。
- 设计目的:将HTML中的特殊字符转换为实体编码形式,确保HTML文档正确解析和显示。
- 应用场景:
- 防止XSS(跨站脚本攻击)等安全风险。
- 确保特殊字符在HTML中正确显示。
- 安全性:有助于防止潜在的安全风险,提高网页兼容性。
- 输出格式:将特殊字符转换为
&xxxx;
形式(如<
编码为<
)。 - 典型特征:确保HTML文档中的特殊字符不被解析为标签或脚本。
- 常用解密网站:Html编码解码 - 工具匠
- 对字符串
admin@123
进行处理后的结果及简要分析:- HTML 实体编码:
admin@123
- HTML 实体编码:
14、16进制Unicode
-
作用:将Unicode字符表示为十六进制形式。
-
特点:便于处理或传输Unicode字符。
-
设计目的:将Unicode字符表示为十六进制形式,便于处理或传输。
-
应用场景:
- 调试、日志记录、文本处理等需要直接查看或编辑Unicode字符的场合。
-
安全性:仅是编码,不提供加密。
-
输出格式:每个Unicode字符表示为4位十六进制数(如
U+4E2D
表示“中”)。 -
典型特征:便于人类阅读和计算机处理。
-
常用解密网站:在线Unicode编码/解码工具
-
对字符串
admin@123
进行处理后的结果及简要分析:- Unicode 结果:
\u0061\u0064\u006d\u0069\u006e\u0040\u0031\u0032\u0033
- 分析:
%u
编码将 Unicode 字符编码为%uXXXX
形式,%u
解码则将其还原为原始字符。
- Unicode 结果:
三、加密算法
1、NTLM编码
-
作用:Windows系统中使用的哈希算法,用于用户认证。
-
特点:输出为32位十六进制字符串,但已被认为不够安全,建议升级到更安全的算法。
-
设计目的:NTLM是一种用于Windows网络认证的协议,基于挑战-响应机制,用于验证用户身份。
-
应用场景:
- Windows系统中的本地和网络认证(如SMB协议)。
- 早期广泛用于Windows域认证,现在逐渐被Kerberos取代。
-
安全性:
- NTLM存在多种安全漏洞,如传递哈希攻击(Pass-the-Hash)。
- NTLMv2比NTLMv1更安全,但仍不如Kerberos。
- 微软推荐在新系统中使用Kerberos而不是NTLM。
-
如何识别:
16字节的二进制数据,通常表示为32个十六进制字符(可通过应用场景与MD5区分)。
-
对字符串
admin@123
进行处理后的结果及简要分析:- 结果:
8846f7eaee8fb117ad06bdd830b7586c
(此结果基于NTLM哈希算法的典型实现,实际结果可能因具体实现而异) - 分析:NTLM 是 Windows 系统中使用的哈希算法,输出为 32 位十六进制字符串。它已被认为不够安全,建议升级到更安全的算法。
- 结果:
2、DES
- 作用:对称加密算法,用于加密数据。
- 特点:密钥长度较短(56位),已被认为不安全,不推荐用于新系统。
- 设计目的:对称加密算法,用于加密数据。
- 应用场景:
- 早期加密需求(如金融交易、数据保护)。
- 安全性:密钥长度较短(56位),已被认为不安全,不推荐用于新系统。
- 输出格式:加密后的数据为二进制格式。
- 典型特征:分组加密算法,块大小为64位。
3、RC4
- 作用:流加密算法,用于加密数据。
- 特点:存在严重安全漏洞,不推荐用于安全敏感场景。
- 设计目的:流加密算法,用于加密数据。
- 应用场景:
- 早期SSL/TLS协议、WEP加密等(现已不推荐使用)。
- 安全性:存在严重安全漏洞(如密钥流偏差),不推荐用于安全敏感场景。
- 输出格式:加密后的数据为二进制格式。
- 典型特征:加密速度快,但安全性较低。
5、Rabbit
- 作用:流加密算法,旨在提供高效、安全的加密。
- 特点:安全性较RC4有所提升,但仍不如现代加密算法。
- 设计目的:流加密算法,旨在提供高效、安全的加密。
- 应用场景:
- 早期加密需求(现已较少使用)。
- 安全性:安全性较RC4有所提升,但仍不如现代加密算法。
- 输出格式:加密后的数据为二进制格式。
- 典型特征:加密速度快,设计简单。
6、Triple DES(3DES)
- 作用:对称加密算法,通过三次DES加密提高安全性。
- 特点:密钥长度较长(112位或168位),但性能较低,逐渐被AES取代。
- 设计目的:对称加密算法,通过三次DES加密提高安全性。
- 应用场景:
- 金融交易、数据保护等需要较高安全性的场景(但性能较低)。
- 安全性:密钥长度较长(112位或168位),但性能较低,逐渐被AES取代。
- 输出格式:加密后的数据为二进制格式。
- 典型特征:分组加密算法,块大小为64位,通过三次DES加密提高安全性。
四、其他
1、ES(Elasticsearch)
-
作用:提供分布式、实时的搜索和分析引擎。
-
特点:支持分布式集群、实时搜索、高扩展性,但需配合其他安全措施以确保数据安全。
-
设计目的:提供分布式、实时的搜索和分析引擎。
-
应用场景:
- 日志分析、全文检索、商业智能等需要高效搜索和分析的场景。
-
安全性:需配合其他安全措施(如认证、授权)以确保数据安全。
-
输出格式:返回JSON格式的搜索结果。
-
典型特征:支持分布式集群、实时搜索、高扩展性。