【发布时间】:2021-09-05 15:54:31
【问题描述】:
我以十六进制输入 pesan。例如 e = 5、n = 221 和 pesan = 1e。然后 pesan 将转换为十进制并解密。结果(十进制)将再次转换为十六进制。但我得到了错误
TypeError: 'int' object is not iterable.
如何解决?这是代码
def mod(x,y):
if (x < y):
return x
else:
c = x % y
return c
def hex_to_decimal(hex_str):
decimal_number = int(hex_str, 16)
return decimal_number
def decimal_to_hex(decimal_str):
decimal_number = int(decimal_str, 10)
hex_number = hex(decimal_number)[2:]
return hex_number
def decrypt(m):
plainDecimal=[]
for i in m:
cipherElement=mod(int(i)**e,n)
plainDecimal.append(cipherElement)
return plainDecimal
e = int(input('Input e: '))
n = int(input('Input n: '))
pesan = input('Input message: ' )
decimalp = hex_to_decimal(pesan) #Convert hex to decimal
plain = decrypt(decimalp)
ListToStr2 = ''.join([str(x) for x in plain])
decimal1 = decimal_to_hex(ListToStr2) #Convert decimal to hex
print("Dekripsi Tanda Tangan Digital (Heksadesimal): ", decimal1)
【问题讨论】:
-
看起来您希望
m是一个字符串,但它是一个整数。 -
什么是
hex_to_decimal或decimal-to_hex?我无法运行代码 -
我已经更新了问题
-
另外,
mode是什么。你能把它提供给吗? -
我已经更新了。