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



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

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

这是我的代码:

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)

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

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代码:

  • https://github.com/Sazzad-Saju/RSA_Algorithm

我认为这取决于您的应用程序。但是,由于我们经常使用加密进行通信,因此最好使用与通信系统更兼容的编码。例如,Base64是用于加密方案(对称或非对称(的流行编码之一。

最新更新