IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:RSA

共 6 篇相关文章

IT 累计浏览 1,915

Burpsuite插件开发之RSA加解密

这篇讲的是如何为 Burpsuite 开发一个处理特定混合加密格式的插件,核心目标是解密数据包、注入测试 payload 后再加密回传,主要用于针对自定义加密通信的 APK 进行安全测试。 作者面对的数据包是典型的“RSA+DES”混合加密结构:一个 JSON 串中包含用 RSA 加密的 DES 密钥(encryptKey)和用该 DES 密钥加密的数据(data)。插件开发的核心,在于正确实现了 `InsertionPoint` 接口,以支持这种非标准格式。具体思路是,在 `getInsertionPoints` 方法中,插件会解析请求参数,识别出特定的加密参数(如参数名“c”),随后依次用配置的 RSA 私钥解密得到 DES 密钥,再用该 DES 密钥解密出明文 JSON 内容。最后,将解密后的明文 JSON 中的各个键值对分别构造为独立的注入点,从而让 Burpsuite 的扫描器和 Intruder 模块能够直接对原本不可见的加密数据内部进行模糊测试或漏洞探测。 这个插件的价值在于,它将一个需要手工逆向分析加解密流程才能进行安全测试的场景,自动化为了一个可复用、可配置的插件。实现的关键在于透彻理解目标应用的加解密协议,并利用 Burpsuite 的 `InsertionPoint` 扩展点,巧妙地将加密解密逻辑无缝嵌入到测试流程中。

IT 累计浏览 2,720

RSA 算法是如何诞生的

这篇讲的是RSA算法背后那段堪比励志小说的诞生史。作者从三个性格迥异的发明者说起:痴迷新技术的Rivest、学啥都快的Shamir,以及起初只想当“泼冷水”评委的Adleman。 故事的核心冲突在于,他们为Diffie提出的公钥密码概念寻找可行的单向函数。从1976年底开始,Rivest和Shamir构想,Adleman负责破解,这个循环竟重复了42次。每一次方案被Adleman击破,都是一次挫折,但也排除了一条错误路径。 直到1977年逾越节派对后,Rivest在深夜获得关键灵感,一气呵成完成了最终方案,这次Adleman终于无法破解。更有趣的细节是,论文署名按字母顺序排列,若非Adleman的坚持,这个后来改变互联网安全的技术或许就叫“ARS”了。 文章还揭示了历史的另一个面貌:早在1973年,英国数学家Clifford Cocks在半小时内就得出了几乎相同的算法,却因政府保密协议,其成果被尘封了二十多年。这让RSA的荣耀与一段无名英雄的遗憾交织在一起,也让算法的诞生故事更显厚重。

IT 累计浏览 4,074

数论的应用-RSA公钥算法

这篇讲的是RSA公钥算法背后的数学之美。作者从伟大的数学家欧拉切入,引出了现代非对称加密的基石——RSA算法。文章首先点明了对称加密的局限,随后介绍了1976年公钥密码思想的诞生,以及1977年RSA算法的正式提出。 核心部分,文章深入浅出地拆解了RSA所依赖的数论工具:欧拉函数用于计算与某数互质的数的个数,而欧拉定理(费马小定理的推广)则为算法的数学正确性提供了保证。随后,文章分步展示了RSA密钥生成与加解密的全过程:如何选取两个大素数p和q来构造模数n,并由此推导出公钥e和私钥d;以及如何用公钥加密、私钥解密。 为了让理论落地,文中还用了一个具体数字例子(M=52, p=17, q=11, e=7, d=23)演示了整个加密解密流程,让抽象公式变得清晰可感。最终,文章回归数学原理,简要说明了为何这样构造能实现解密的正确性。 整篇文章将深奥的数论概念与实际的密码学应用串联起来,展现了从纯理论到关键技术的奇妙旅程,让你理解为什么这个看似无用的数学分支,最终能成为守护互联网安全的隐形卫士。

IT 累计浏览 4,351

跨越千年的RSA算法

作者从古希腊几何学中“可公度线段”的概念出发,讲述了数论中一系列精妙思想的演进。文章首先通过欧几里得求最大公度单位的直观例子,自然引出“辗转相除法”这一核心算法,并证明其效率。随后,以正方形边长与对角线不可公度的发现为例,揭示了无理数在古希腊时期就已出现的历史趣闻。 作者进而将话题转向数论中更深入的概念——互质与中国剩余定理。文中用生活中的公交车班次例子,生动解释了互质与最小公倍数的关系,并引出了《孙子算经》中的经典问题,展示了中国剩余定理的雏形与魅力。 这篇长文并非对教科书内容的简单复述,而是作者基于为《程序员》杂志撰写文章时积累的大量素材与个人思考,重新梳理的一条连贯知识脉络。他以牺牲部分严谨性为代价,力求用更直观、可读的方式,展现从古典数论走向现代公钥加密(如RSA算法)的奇妙旅程。

IT 累计浏览 2,552

费马检查

这篇讲的是费马检验,一种基于费马小定理的素数检测算法。作者从日常编程中的需求出发,分享了如何用这个简单方法快速判断一个数是否为素数。 费马检验的核心原理是:如果一个数p是素数,那么对于任何小于p的正整数a,a的p-1次方模p应该等于1。利用这个定理,我们可以随机选择a值进行测试。如果多次测试都通过,那么p很可能是素数。文章详细解释了算法的步骤,并给出了代码示例,让读者能轻松实现。 然而,文章也指出了费马检验的局限性。它对于大多数合数能正确识别,但存在一类特殊的合数——卡迈克尔数,它们会通过所有基于费马小定理的测试,导致误判。例如,561是一个卡迈克尔数,尽管是合数,但费马检验会错误地认为它是素数。 对比其他素数检测方法,如米勒-拉宾检验,文章分析了它们的差异。米勒-拉宾检验基于更强的条件,能避免卡迈克尔数的误判,但计算稍复杂。在实际应用中,费马检验适合对速度要求高、错误容忍度较高的场景,比如初步筛选;而米勒-拉宾检验更适合安全关键的应用,如密码学中的密钥生成。 通过这篇分享,作者不仅介绍了经典算法,还提醒读者在选择工具时要考虑实际场景的权衡。文章结尾附带了一些优化技巧,比如结合确定性测试来提高准确性。

IT 累计浏览 6,011

RSA 公钥格式转换之PHP实现

这篇讲的是.NET与OpenSSL在RSA公钥格式上的“语言不通”问题。在.NET环境中,RSA公钥常以``和``这样的XML格式呈现,而OpenSSL进行加解密操作时,使用的是标准的PEM编码格式。文章的核心内容,就是提供了一套纯PHP的解决方案,将前者转换为后者。 作者的实现思路非常清晰:手动构造符合ASN.1标准的二进制数据结构,再将其Base64编码并包裹为PEM格式。具体代码中定义了关键的ASN.1类型常量(如INTEGER、SEQUENCE),并提供了两个核心静态方法:`getPublicKeyFromModExp`用于将模数和指数组合转换,`getPublicKeyFromX509`则处理完整的证书字符串。 整个实现的巧妙之处在于,它不依赖外部命令行工具,完全在PHP层面完成了底层的格式拼接与编码工作,这对于需要在PHP环境中对接.NET系统生成的密钥的场景非常实用。文章通过具体的代码片段和格式示例,清晰地展示了转换前后的差异与实现逻辑。