自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除