首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sage编程中的ZZ函数

sage编程中的ZZ函数
EN

Stack Overflow用户
提问于 2012-10-03 14:18:20
回答 1查看 1.1K关注 0票数 0

所以我决定学习Sage编程,因为它可以处理非常大的数字,这对RSA加密/解密很有用。

(1)我是在举一个例子,但我不太确定他们是如何在ZZ()函数中得到100的。

(2)另一个问题是,有没有一种方法可以使用sage函数从整数转换为纯文本?

代码语言:javascript
复制
sage: m = "HELLOWORLD"
sage: m = map(ord, m); m
[72, 69, 76, 76, 79, 87, 79, 82, 76, 68]
sage: m = ZZ(list(reversed(m)), 100) ; m           <------ this line
72697676798779827668


sage: m = 72697676798779827668
sage: c = 630913632577520058415521090
sage: d = 4460824882019967172592779313
sage: n = 4951760154835678088235319297
sage: power_mod(c, d, n)
72697676798779827668                <--- how do i convert this number back to plain text
sage: power_mod(c, d, n) == m
True
EN

回答 1

Stack Overflow用户

发布于 2012-10-03 20:46:21

100告诉你列表中的每个元素要乘以幂的多少。可以把它想象成“基数100”。

代码语言:javascript
复制
sage: ZZ([1,2,3],100)
30201
sage: ZZ([1,2,3],2)
17
sage: ZZ([1,2,3],10) # 1*10^0+2*10^1+3*10^2
321

ord开始,This question有无数种倒退的方法。然后我们使用chr

代码语言:javascript
复制
sage: a = 72697676798779827668
sage: ''.join([chr(int(str(a)[i:i+2])) for i in range(0, len(str(a)), 2)])
'HELLOWORLD'

我同意这在可读性上并不理想。实际上,Sage在其crypto module中有一些其他内置的方法来在教学基础上进行加密。它也有一些用于字母表的内置内容。(我假设这不是您当前正在创建的RSA的工业强度版本。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12702837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档