Cryptography SageMath:Mod().sqrt()前缀为;sqrt";Sagemath中特定组合的字符串。这是虫子吗?

Cryptography SageMath:Mod().sqrt()前缀为;sqrt";Sagemath中特定组合的字符串。这是虫子吗?,cryptography,modulo,sage,largenumber,Cryptography,Modulo,Sage,Largenumber,在Windows 10上使用Sagemath 9.2 a1=9798722381116618056227637476565566484018606253194222755351973203508462742253522311154076194134700145275527578605535821781545038187843569198505993524407287520970070771172279404172004212310432500247465608472105231701909612

在Windows 10上使用Sagemath 9.2

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
中, 不需要二次字段扩展