0Pricing
Cryptology Academy · 课时

密码学输出中的十六进制

了解密码学哈希、密钥和密文为何通常以十六进制表示法显示

密码学输出中的十六进制 是 CoddyKit 上的免费 Cryptology Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cryptology Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cryptology Academy 课程共包含 4 节课。

十六进制:以 16 为基数

十六进制是一种以 16 为基数的计数系统,使用数字 0-9 和字母 A-F(或 a-f)。每个十六进制数字恰好表示 4 位(半字节),因为 16 = 2^4。

在计算机领域,十六进制是表示二进制数据的通用语言。内存地址、字节值、颜色代码和密码学输出通常都使用十六进制表示。

每个十六进制数字占 4 位

由于每个十六进制数字恰好表示 4 位,因此每个字节(8 位)恰好对应 2 个十六进制数字。这使得二进制与十六进制之间的转换非常简单:将二进制拆分为 4 位组,再转换每个组。

例如,字节 11001010 可拆分为 1100(C)和 1010(A),得到十六进制值 CA。无需进行算术运算,只需查表转换即可。

将二进制转换为十六进制

要将二进制转换为十六进制,请从右向左将位分成四组,然后转换每组:0000=0、0001=1、……、1001=9、1010=A、1011=B、1100=C、1101=D、1110=E、1111=F。

示例:11111111 变为 1111|1111 = FF = 十进制 255。00000000 变为 00 = 十进制 0。01001000 = 0100|1000 = 48,即 ASCII 字符 'H' 的代码。

十六进制为何适合紧凑表示二进制数据

一个完整的 32 字节密钥(256 位)如果用二进制表示,需要写出 256 个 1 和 0。用十六进制表示只需 64 个字符。用十进制表示则可能是一个长达 78 位的数字。

十六进制实现了恰到好处的平衡:足够紧凑,便于人类阅读和书写,同时又能直接表示底层二进制结构,不产生任何转换开销。

十六进制表示的 SHA-256 输出

SHA-256 会生成 256 位(32 字节)的哈希值。以十六进制显示时,它始终恰好包含 64 个十六进制字符。例如,"hello" 的 SHA-256 哈希值是 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824。

计算如下:64 个十六进制字符 × 4 位 = 256 位。无论输入大小如何,固定长度都是哈希函数的基本属性。

十六进制表示的密钥

密码学密钥通常以十六进制字符串的形式存储和显示。AES-128 密钥为 16 字节 = 32 个十六进制字符。AES-256 密钥为 32 字节 = 64 个十六进制字符。

配置 TLS 或加密文件时,您经常需要以十六进制字符串的形式提供密钥。OpenSSL、Python 密码学库以及大多数密码学框架等工具都要求并生成十六进制编码的密钥。

初始化向量与随机数表示法

初始化向量(IV)和随机数也用十六进制表示。标准的 AES-CBC 初始化向量为 16 字节 = 32 个十六进制字符。AES-GCM 通常使用 12 字节的随机数 = 24 个十六进制字符。

十六进制表示法便于目视检查和比较初始化向量、确认两条消息使用了不同的随机数,以及在开发过程中手动调试密码学协议。

OpenSSL 十六进制输出格式

OpenSSL 会以特定格式输出哈希值和密钥:使用小写十六进制字符,并在每一对字节之间加冒号。例如,MD5 哈希值会显示为 "b9:4d:27:b9:93:4d:3e:08:a5:2e:52:d7:da:7d:ab:fa:c4:84:ef:e8"。

以冒号分隔的格式能让每个字节在视觉上清晰可辨,也更容易进行比较。不同工具可能输出不带冒号或使用大写字母的十六进制字符串,但底层字节完全相同。

证书数据的十六进制与 Base64

X.509 证书以 DER 格式(二进制)或 PEM 格式(经过 Base64 编码的 DER)存储。使用十六进制也可以,但 Base64 比十六进制紧凑 33%(每个 Base64 字符编码 6 位,而十六进制字符编码 4 位)。

对于证书和加密文件等大型对象,通常首选 Base64。对于哈希值、密钥、初始化向量和 MAC 等短值,通常首选十六进制,因为它能直接显示字节边界。

读取十六进制转储

十六进制转储会将文件或内存区域同时显示为十六进制字节和 ASCII 字符,并排呈现。左列显示十六进制值,右列显示可打印的 ASCII 字符(不可打印字节显示为点号)。

读取十六进制转储是进行密码学调试的一项必备技能。确认初始化向量从正确的偏移量开始、确认密钥长度正确,或确认密文前缀符合预期,都需要读取十六进制转储。

安全标头中的十六进制编码

HTTP 安全标头和密码学令牌经常使用十六进制编码。CSRF 令牌、会话标识符和 API 密钥通常表示为长度为 32 到 64 个字符的十六进制字符串。

一个经过十六进制编码的 128 位(16 字节)随机 CSRF 令牌包含 32 个字符。您可以轻松验证其正确性:数一数字符数量,检查是否只出现 0-9 和 a-f,并确保没有填充字符,因为填充字符表明使用的是 Base64 而不是十六进制。

十六进制转换测验

请测试您对十六进制表示法的理解。

要点:密码学中的十六进制

十六进制每个字符编码 4 位,因此 1 字节 = 2 个十六进制数字。SHA-256 会生成 64 个十六进制字符(256 位),AES-128 密钥包含 32 个十六进制字符,AES-256 密钥包含 64 个十六进制字符。

十六进制是密码学哈希值、密钥、初始化向量和随机数的标准表示形式,因为它能直接反映字节结构。OpenSSL 和大多数密码学工具都会输出并接受十六进制编码的值。

常见问题解答

「密码学输出中的十六进制」课时是免费的吗?

是的 — 「密码学输出中的十六进制」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cryptology Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cryptology Academy 课程共包含 4 节课。

「密码学输出中的十六进制」这节课中我会学到什么?

了解密码学哈希、密钥和密文为何通常以十六进制表示法显示 你通过在浏览器中直接运行的动手代码来练习 Cryptology Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cryptology Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cryptology Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「密码学输出中的十六进制」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cryptology Academy 课中编写并运行代码吗?

能。每节 Cryptology Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Base64 编码:工作原理
  2. ASCII、Unicode 与文本表示
  3. 密码学输出中的十六进制
  4. 编码、加密与哈希的区别
← 返回 Cryptology Academy