STILL LEARNING. ALWAYS CURIOUS.

保持好奇,
把想法做出来。

我是 Jueansuy,一名网络空间安全专业的学生。
这里记录在学的东西,也放一些自己想用的小工具。

从一个小实验开始
不急着成为专家,先让一个小东西跑起来。
01 / TOOLBOX

随手用的小工具.

文本在本页处理,不上传输入内容

BROWSER ONLY

给一段文本生成 SHA-256 摘要,用来比较内容是否相同。它不是加密,也不能解密回原文。

0 字符 · 0 字节UTF-8
等待运行64 位十六进制
⌘ / Ctrl + Enter 快速运行无需账号 · 不保存文本 · 无第三方脚本
02 / LEARNING BY DOING

学习与实践.

做过的尝试,正在继续的兴趣。

算法练习

CSP / C 语言刷题记录

备考 CSP 时建立的刷题记录仓库,用 C 语言练习 CSP 与 LeetCode 题目,整理代码、样例和解题复盘,方便回看练习过程。

实践笔记 009蒙特卡洛:几何概率估计 π、平方比较与边界等于陷阱 实践笔记 008二分查找:循环不变量、边界收缩与防溢出设计 实践笔记 007最长公共子序列:二维网格状态设计、栈溢出陷阱与回溯路径 实践笔记 006最长递增子序列:dp 状态设计、初始化陷阱与全局最大值
展开更早的 5 篇实践复盘 (001 ~ 005)
全部归档查看全部 9 篇算法实践笔记与分类索引 查看公开仓库
最近在玩RECENT

Minecraft 生电生存

最近租用了一台 VPS,用于 Minecraft 生电生存。

长期服运行中
03 / FIELD NOTES

把一个概念弄明白.

边用,边理解。

01
HASH / 内容指纹

SHA-256 为什么没有“解密”按钮?

摘要、加密、密码存储,先分清这三件事。

SHA-256 会把输入转换为固定长度的摘要。改动一个字符,通常就会得到完全不同的结果。你可以在上面的工具里,把“你好”改成“你好!”,观察变化。

哈希没有对应的解密操作。不过,对容易猜到的输入,别人仍可逐个尝试并比较摘要。因此,直接用一次 SHA-256 保存密码并不合适;密码存储需要专门的方案。

02
ENCODING / 字节与文本

Base64 看不懂,就代表安全吗?

把中文和 emoji 编码,再亲手还原回来。

Base64 是把字节表示成一组可打印字符的编码方式。它不需要密钥,知道编码规则就能解码,所以不能拿来保护秘密。

本页先把文本转为 UTF-8 字节,再做标准 Base64 编码。解码时也会检查结果是不是有效的 UTF-8 文本;图片或任意二进制数据的 Base64 不一定适合这个文本工具。

03
WEB / 一个小细节

URL 里的 % 和 + 是怎么回事?

路径、参数值和表单编码,规则有时不一样。

当你把一段文本放进 URL 的参数值时,空格、中文和一些符号需要编码。例如,空格可以变成 %20,加号可以变成 %2B。

本页使用 encodeURIComponent 与 decodeURIComponent,适合单独的参数值。它不会把解码输入中的 + 自动当成空格,也不会代你解析整条 URL。

04
JWT / 凭据剖析

JWT 看得见明文,怎么防篡改?

Base64URL 只是序列化,防伪全靠签名。

JWT 的 Header 和 Payload 仅使用 Base64URL 编码,任何人截获都能直接看到里面的 JSON 字段。它根本不是加密,千万不要在 Payload 内存放用户密码或敏感密钥!

JWT 防篡改的核心是第三段签名:服务端使用私钥或密钥对前两段进行加密或 HMAC 哈希。一旦攻击者篡改了角色或过期时间,服务端验签就会立即失败。另外注意警惕常见的 alg: "none" 攻击漏洞。

05
TIME / 整数边界

2038 年问题与时间戳为什么有秒和毫秒?

32 位有符号数的尽头,与 10 位 / 13 位的混淆。

Unix 时间戳记录自 1970-01-01 00:00:00 UTC 起流逝的秒数。在传统的 32 位有符号整数系统中,时间戳最大值为 2,147,483,647,即北京时间 2038 年 1 月 19 日 11:14:07,随后将溢出翻转为负数,这就是著名的“2038 年问题”。

在工程中,Linux/Python/C 常使用 10 位秒级时间戳,而 JavaScript 的 Date.now() 默认返回 13 位毫秒级时间戳。混淆二者会导致年份跳到几万年之后或 1970 年初,排查时先数位数是关键。

04 / ABOUT THIS CORNER

一个慢慢长大的小站。

不把“会了多少”当作开始的门槛。先做一点,记下一点,再把不明白的地方弄清楚。

LEARN
BUILD
REPEAT.