Cryptography SageMath:Mod().sqrt()前缀为;sqrt";Sagemath中特定组合的字符串。这是虫子吗?
在Windows 10上使用Sagemath 9.2Cryptography SageMath:Mod().sqrt()前缀为;sqrt";Sagemath中特定组合的字符串。这是虫子吗?,cryptography,modulo,sage,largenumber,Cryptography,Modulo,Sage,Largenumber,在Windows 10上使用Sagemath 9.2 a1=9798722381116618056227637476565566484018606253194222755351973203508462742253522311154076194134700145275527578605535821781545038187843569198505993524407287520970070771172279404172004212310432500247465608472105231701909612
a1=9798722381116618056227637476565566484018606253194222755351973203508462742253522311154076194134700145275527578605535821781545038187843569198505993524407287520970070771172279404172004212310432500247465608472105231701909612623072343883942216806934904529600639676698348239426243771486521532222069409611514728756060897629936844695006373653175992634673678639333010588450459856073283711803562624604903939371180331799770859975570538637080854403145593115412235472396788217006604692623467390849309525705453042214107891481676000228162932355494949048323338710209710265138177331357093216148170816932468855284646645175736
n=277728574098752575294159909112142119758443071844302414518994078387505030243233678955409816065867099859800034350821169958880177314266348458086247962925079891714976291094508258185873831122806390374845934906929359982024376396267471336509906033330945135315052099542730044735671932355350619429917509327258086792499646670907234803979167153208768678037193013134400050750564812038590104909836599717523664197112053206745235908610490771521043641301554667103447836767946523373711554945184981042101718184261588808080362538758862101545582243785835826596448964633280312880403131911606132775218352803868457964008613313573
a2=Mod(a1,n).sqrt()
我得到以下信息
sage:print(a2)
SQRT979872238111661805622763747474756556648401860625319422275535197320350846274225352311154076194134700145275527578605558217515450381873569198505993352407287529707711724074172004212332524746560847210523170190126230723483942298069349045296006396766983482394426243437714865215322069409614728756069736959926346736786393330105088450459856073283711801803562460490373371317997708599757357053863708085440314559311541223547239678821700660469262346739084930952570545304221410789148148167600022816293235549494948233387102097102651381773317093216148170816932468688552846466475736
如果您观察到,a2的前缀是sqrt
我不认为这与其他根,我与鼠尾草计算。这是什么意思
这是一个bug还是有其他意义?它看起来是素数(至少是伪素数): 假设是,让我们定义
n
元素中的有限域:
sage: F = GF(n, proof=False)
并将a1
视为F
中的元素a1
:
sage: A1 = F(a1)
询问a1
是否为平方模n
相当于询问A1
是否为F
中的正方形
sage: A1.is_square()
False
不是!因此,当我们计算A1
的平方根时,
它必须是F
的二次扩展
sage: A1.is_square()
False
这就是为什么当我们要求Sage计算平方根时,
它将其作为扩展的生成器
此生成器的自然名称为“sqrt(n)”,
这就是Sage所用的
也许,当你计算其他平方根时,
它们是数字的平方根
平方模n,因此平方根
可在F
中计算,即在ZZ/n ZZ
中,
不需要二次字段扩展