素数,朴素的素

素数,朴素的素

这几个月,也算是心里膨胀到极点了,居然开始参加CTF了。而且都是参加好难好难的比赛,而且还是没有接受专业培训就参加比赛的。好在有一个队友,要不然自己都怕怕的。

每次参赛基本上就是只能做一下签到题,基本上也不用写什么writeup,因为签到题基本上就是玩游戏或者直接复制标准答案啦。不过虽然每次都做不出正题来,但是还是学到了很多东西,就比如Crypto的题目,RSA就是最常见的,每次比赛都至少有一道。

而我每次都会以为自己要做出来了,结果怎么算都没有结果。

学习用sagemath

每次参加CTF都会遇到一个RSA的题目,关于RSA的算法这里我就不贴了,反正大家都能找到,不过比赛里面用到的多半是变种。因为每次试着用Python的solve或者fsolve求解带有取余运算的方程都无果,无奈开始找更加高级的工具。听了一堂腾讯的公开课,主讲0ops战队的队长介绍了几个工具,其中就有sagemath,开源免费,嗯,适合我。

sagemath下载地址 https://www.sagemath.org/

我意外的发现sagemath在求解素数相关问题好像很擅长啊,而且计算速度好快。我在试着求解因子分解的时候决定用next_prime,previous_prime这些函数试根,居然秒秒钟就给出了一个素数。当然,我并没有试出来(T_T)

出于好奇,我就去看sagemath的源码,想知道为什么这些函数这么快。
源码地址在这里,https://github.com/sagemath/sage/tree/develop/src/sage/arith

(Github还不错,现在源码里可以navigate,点击一个函数的名称可以跳转到该函数的源码,大家自己找一下想要的函数,国内网速还是有些慢的,你们有条件就科学上网吧。)

然而看了源码以后备受打击,因为根本看不懂!虽然也是python写的,但是里面用到了ring这种数学概念,百度一下,什么高斯整数环之类的。关于这个整数环和sagemath的函数,我觉得有必要单开一篇来讲,等我研究清楚之后吧(:P)

素数给我们的启示

其实RSA里面用到了素数,素数的运算有很好的不可逆性,这些性质来源于素数一种很好的品质——一个素数,只能被自己和1整除。如果把除法当作一种解构的方式的话,素数其实很强大,它不能被解构。(我们暂时忽略被1整除的问题,被1整数其实就是证明自己是整数而已啦)

素数其实很不合群,因为除了1以外和其他数就没有公因子,换句话说就没有共同爱好啦,好可怕啊,这就是人世间所说的奇葩吧。不过有时候,静下心来想想,真的会有两个人的兴趣爱好完全相同吗?也许那只是一种错觉呢,也许我们就是认同与这种错觉呢,然后被各种认同分割得四分五裂。

所以,我没有把素数成为质数,因为我好喜欢这样的素数,朴素的素。如果一个数字真实面对自己,认同与自己目前的状况,而不去追逐外在的所谓认同,那么它就可以这么强大,那么一个人是不是也可以?

突然想到了一个人——拉马努金,那个印度的天才数学家,据说每一个整数都和他是好朋友,这个人一生都只对数学感兴趣,很不合群,但是他确实创造了近乎奇迹的数学创造,在历史的长河中为人类闪耀了一次。当然我们不是都需要变成他一样,况且我们也无法变成他一样,但是我们如果找到自己真正感兴趣的事物,专注的投入其中,也是很好的事情。做一个素数,你愿意吗?

有人说所有科学学到最后都是哲学,也许所有科学学到最后都是数学。哎,我怎么觉得之前的学都白上了呢,现在开始真正的学习吧。每天进步一点点,借CSDN的宝地做一些记录,希望有一天在回首往事的时候,能够告诉自己,时间没有虚度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不争之德

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值