Python 在SAGE中的两个整数环(具有不同的MOD)之间执行算术运算

Python 在SAGE中的两个整数环(具有不同的MOD)之间执行算术运算,python,math,cryptography,sage,dsa,Python,Math,Cryptography,Sage,Dsa,我正在尝试使用DSA(DSS)对Sage中的测试消息进行数字签名。运行代码后,我得到: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "_sage_input_28.py", line 10, in <module> exec compile(u'open("___code___.py","w").write("# -*- coding:

我正在尝试使用DSA(DSS)对Sage中的测试消息进行数字签名。运行代码后,我得到:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_28.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("IyBDaGVjayB0aGUgc2lnbmF0dXJlCmNoZWNrX3NpZyhtLHAscSxnLHIscyx5KQ=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>

  File "/tmp/tmpUuKk65/___code___.py", line 3, in <module>
    exec compile(u'check_sig(m,p,q,g,r,s,y)
  File "", line 1, in <module>

  File "/tmp/tmppjN9Gi/___code___.py", line 7, in check_sig
    u_2 = mod(r*w,q)
  File "element.pyx", line 1701, in sage.structure.element.RingElement.__mul__ (sage/structure/element.c:14531)
  File "coerce.pyx", line 856, in sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/structure/coerce.c:8169)
TypeError: unsupported operand parent(s) for '*': 'Ring of integers modulo 98007532214006523718033513010741500921668410005086660781341579786663143142637' and 'Ring of integers modulo 44449'
但是,它们都是
mod q
。为什么我不能对它们执行乘法运算?有什么我必须做的吗


这里有一个指向完整(仍然很小)sage表的链接:

错误表明您试图将两个环相乘。乘法不是为环定义的运算。乘法是为包含在环中的元素定义的运算。我怀疑r和w的定义是否与你想象的一样。@Zéychin,这是我对
r
w
的唯一定义。如果你想看的话,我可以把我的床单寄出去。我可以看一下。我不能做出任何承诺。我对圣人不太熟悉,但对数学很熟悉。你可能会在网上得到更多的关注。有人提议创建一个@Zéychin,出于某种原因,我无法公开该表。我上传了它的截图,并在描述中添加了链接。谢谢你看
r = mod(mod(g^k,p),q)
w = mod(1/s,q)