You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Python中**运算的list与int操作数报错,加密s的十进制值并输出结果

问题根因

你遇到的报错由以下几处代码错误直接触发:

  • 笔误导致核心类型错误:循环计算加密值时,误将幂运算的操作数写为整个列表decimalList,也就是代码里的cipherElement = mod(decimalList**e, n)这一行,本来应该对当前遍历的单个数字i做运算,结果错写成对整个列表求幂。Python不支持列表与整数的幂运算,直接抛出unsupported operand type(s) for ** or pow: 'list' and 'int'错误
  • 自定义mod函数冗余:Python内置取模运算符%本身可自动处理被除数小于除数的场景,单独编写分支判断没有实际作用
  • 类型不匹配隐患:''.join()仅支持拼接字符串类型元素,直接传入整数类型的加密结果会触发二次报错
  • 逻辑偏差:原加密逻辑中对整个十进制明文拆分为单个数字逐值运算,和块加密的常规运算目标存在偏差

修改方案

根据你的实际加密需求,对应调整逻辑即可正常运行,最终输出为十进制格式结果:

需求1:对整块十进制明文直接做加密运算(符合块加密的常规逻辑)

用Python内置的高效模幂函数pow(底数, 指数, 模数)替代手写的幂运算+取模逻辑,完整可运行代码如下:

#Hexadecimal to decimal
def hex_to_decimal(hex_str):
    decimal_number = int(hex_str, 16)
    return decimal_number
                 
s = "66a9b2d0b1baf7932416c65a28af3c89"    
decimal = hex_to_decimal(s)
print("s in decimal: ", decimal)


#Encryption
e = 79
n = 3220

def enk_blok(m):
    # 直接对整块明文做模幂运算,自动返回十进制加密结果
    cipher = pow(m, e, n)
    return str(cipher)

c = enk_blok(decimal)
print("The result: ", c)

需求2:将十进制明文拆分为单个数字逐位加密

如果你的设计要求拆分逐位计算,需要修正循环内的运算对象,同时统一拼接的元素类型,代码调整为:

#Hexadecimal to decimal
def hex_to_decimal(hex_str):
    decimal_number = int(hex_str, 16)
    return decimal_number
                 
s = "66a9b2d0b1baf7932416c65a28af3c89"    
decimal = hex_to_decimal(s)
print("s in decimal: ", decimal)


#Encryption
e = 79
n = 3220

def enk_blok(m):
    decimalList = [int(i) for i in str(m)]
    cipher = []
    for i in decimalList:
        # 修正运算对象为当前遍历的单个数字i,而非整个列表
        cipherElement = pow(i, e, n)
        # 整数转字符串,适配join的参数要求
        cipher.append(str(cipherElement))
    return ''.join(cipher)

c = enk_blok(decimal)
print("The result: ", c)

内容的提问来源于stack exchange,提问作者brianK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 16:36:04