如何评价开源数学软件 SageMath ?
About
我们评价一个东西的时候要和它的竞品分析。
sagemath的竞品,我敲过的有两个,分别是magma和mathematica。
首先,我个人主观评价一下,我最喜欢的是sagemath。
因为我敲代码敲的比较多,对于代码类的更容易上手。
magma更像一个没完成的半成品,如果一份密码学作业要求使用magma,那这份作业多半来自于悉尼大学。它的各种怪癖让人难以忍受。
在美国高校中,我了解到的大致是sagemath和mathematica五五开。
在中国高校的话,sagemath用的更多,因为没几个学校有付费版的mathematica.
功能完整性上来说,sagemath可能还是不如mathematica.
不过对于密码学人来说,sagemath还是很不错的,但是总得来说文档的更新速度小于代码更新的速度。
例如对于多项式离散对数问题,比较快速的方法就是 index calculus法,可以将DLP的指数复杂度降到亚指数时间.但是在官方文档里面,并没有提到指数演算法。
于是我在github上找到了一个对于index_calculus的实现,结果发现代码的核心来自于sagemath库。
我查阅sagemath的源码才知道在9.4版本中,已经将默认的BSGS算法修改成了index_calculus法。只不过文档还没有更新上去。
但是你如果使用mathematica的话,算法就不透明, mathematica并没有开源,如果出现一些需要一些特定算法才能实现的问题,你很难知道mathematica是否采用到了正确的算法。
我今年提了一个反馈并附上了代码,完成了对于hill密码的KPA攻击,他们的回应很迅速,也指出了我的代码的不足之处。(大致是参数检验问题,一旦封装进入黑盒之后,需要尽可能地把用户地可能输入都覆盖进入),后续由其他人来完成代码。
总结,这是一个快速成长,且开源的数学软件。