首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在RSA中将测试消息转换为整数以生成密文

如何在RSA中将测试消息转换为整数以生成密文
EN

Stack Overflow用户
提问于 2020-07-26 02:18:38
回答 2查看 401关注 0票数 1

函数ConvertToInt(message)应该将文本消息转换为整数,因此可以使用公式M^e mod n生成RSA密文。相反,下面的函数ConvertToInt返回一个包含元素的数组,每个元素都是字符的ASCII值。因此,结果将变成逐个字符加密的字符,而不是字符串。

将消息转换为整数并计算正确的RSA加密结果的正确方法是什么?

下面是我的代码:

代码语言:javascript
复制
def ConvertToInt(message):
    l = len(message)
    arra = []
    i = 0
    while(i<l):
        j=ord(message[i])
        arra.append(j)
        i += 1
    return arra

def mod_ex(b, k, m):

    i = 1
    j = 0
    while(j<=k):
        b = (b*i) % m
        i = b
        j += 1
    return b
def PowMod(s,modulo,exponent):

    bin_e = bin(exponent)
    bin_e = bin_e [::-1]
    ln = len(bin_e)
    result = 1
    slen = len(s)
    for i in range(0,slen,+1):
        for j in range(0,ln-2,+1):
            if(bin_e[j]=='1'):
                result *= mod_ex(s[i],j,modulo)
        s[i] = result%modulo
        result = 1
    return s

def Encrypt(message, modulo, exponent):

  s = ConvertToInt(message)
  return PowMod(s, modulo, exponent)

x = Encrypt("Aa",473,17)
print(x)
EN

回答 2

Stack Overflow用户

发布于 2021-08-01 16:19:06

这是一个ConvertToInt函数,它可以有效地从字符串中计算出一个数字,可以在RSA中使用,cz必须需要一个数字才能操作。

代码语言:javascript
复制
def ConvertToInt(message):
grd = 1
num = 0
message = message [::-1]
for i in range(0,len(message),+1):
    num = num+ord(message[i])*grd
    grd *= 256
return num

在这里获取python版的完整RSA代码:

票数 0
EN

Stack Overflow用户

发布于 2020-07-26 02:49:46

我想这取决于你的申请。但是,由于我们经常使用加密进行通信,因此最好使用与通信系统更兼容的编码。例如,是用于加密方案(对称或非对称)的流行编码之一。

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

https://stackoverflow.com/questions/63092085

复制
相关文章

相似问题

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