- 博客(7)
- 收藏
- 关注
原创 LCG线性同余生成器完全破解指南
线性同余生成器(Linear Congruential Generator)是最古老也是最常用的伪随机数生成算法之一。它的公式极其简洁:Xn:当前状态a:乘数(Multiplier)b:增量(Increment)m:模数(Modulus)LCG虽然简单高效,但绝对不能用于密码学目的。在CTF中,它是最常见的Crypto题目之一,掌握其破解方法是每位选手的必修课。
2026-07-07 14:36:34
224
原创 IPSec:网络层安全的基石与演进
从1995年的RFC 1825到今天的IKEv2和后量子扩展,IPSec走过了近三十年的演进历程。它或许不是最简洁的协议,也不是最容易配置的方案,但在网络层安全这个领域,它提供了最全面、最成熟、最标准化的解决方案。在开放的网络上建立可信的通信,不靠隐藏,而靠密码学。当量子计算真正到来的那一天,IPSec也会像过去三十年一样,继续演进,继续守护网络通信的安全底线。
2026-07-07 14:36:09
363
原创 Baby-step Giant-step 算法详解
离散对数问题是现代密码学的基石之一,它可以描述为:给定素数 p、生成元 g 和 y,求整数 x 使得 g^x≡y(modp)这个问题被认为是计算困难的,但当群的阶较小时,我们可以用算法高效求解。Baby-step Giant-step是求解离散对数的经典算法,在CTF中经常出现。掌握它不仅能解决基础题,还能理解更复杂的攻击如Pohlig-Hellman和Pollard's ρ算法。j%7D。
2026-07-06 21:45:38
209
原创 深入剖析 Bleichenbacher‘s Padding Oracle Attack
1998年,Daniel Bleichenbacher发表了一篇震惊密码学界的论文——针对PKCS#1 v1.5填充的适应性选择密文攻击。这篇论文揭示了一个残酷的事实:只要服务器对"非法填充"和"其他错误"返回不同的响应,攻击者就能在。我们从 s=2 开始搜索,直到找到一个 s 使得 c⋅se mod n 有合法填充。:攻击者不需要知道明文,只需要知道"填充是否正确"这个布尔值。由于原始密文 c 本身就是合法的,所以 s0=1 总是可行的。通过收集多个这样的区间,利用中国剩余定理逐步缩小 m 的范围。
2026-07-06 21:29:54
192
原创 单源最短路径问题的贪心解法——Dijkstra算法(C++)
/ 边权从1开始(避免0与无边混淆)// 随机数生成器(优化:避免rd()在部分编译器失效)= j && gen() % 3 == 0) { // 30%概率有边。// 随机生成带权有向图(邻接矩阵):0表示自身,INT_MAX表示无边,其他为边权。cout << "=== 生成的带权有向图(邻接矩阵)===\n";cout << "=== Dijkstra算法结果 ===\n";// 顶点数(可修改)// 迭代n-1次(最多确定n-1个顶点的最短路径)// 找到当前未访问的距离最小的顶点u。
2025-11-26 22:28:26
472
原创 旋转图像(C++)
比如输入 [[1,2,3],[4,5,6],[7,8,9]] ,输出需为 [[7,4,1],[8,5,2],[9,6,3]]。- 翻转后得到: [[7,4,1],[8,5,2],[9,6,3]] ,即顺时针旋转90度的结果。- 水平翻转后: [[7,8,9],[4,5,6],[1,2,3]] (第0行与第2行交换)。1. 水平翻转:将矩阵沿水平中线上下翻转(第i行与第n-1-i行交换);- 初始矩阵: [[1,2,3],[4,5,6],[7,8,9]];// 步骤1:水平翻转。步骤2:主对角线翻转。
2025-11-20 19:39:04
214
原创 排列序列(c++)
初始 k=8 (减1后), fact[3]=6 , idx=8/6=1 →选 nums[1]=2 , nums 变为 [1,3,4] , k=8%6=2;- 下一轮 fact[2]=2 , idx=2/2=1 →选 nums[1]=3 , nums 变为 [1,4] , k=2%2=0;比如 n=3 时,全排列是 ["123","132","213","231","312","321"] , k=3 对应“213”。// 当前位的数字索引。- 因此,第 k 个排列的第1位,可通过 k/(n-1)!
2025-11-20 19:28:02
366
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅