首页 > 解决方案 > numpy:TypeError:^=:'str'和'int'python的不支持的操作数类型

问题描述

我正在尝试在 Python 上练习 AES 加密。

我的代码中有一个名为 (addRoundKey) 的函数

def addRoundKey(state, roundKey):
    for i in range(16):
        state[i] ^= roundKey[I]

它基本上假设用圆键对状态进行异或,但我收到了这个错误:

state[i] ^= roundKey[i]
TypeError: unsupported operand type(s) for ^=: 'str' and 'int'

我正在使用 numpy 模块创建状态 [] 数组

from numpy.distutils.system_info import tmp
from numpy.random._examples.cffi.extending import state

def keyExpansionCore(x, i):

def subBytes(state):


def shiftRows(state):


def mixColumns():



def addRoundKey(state, roundKey):
 for i in range(16):
    state[i] ^= roundKey[i]



def encrypt(message, key):
  for i in range(16):
    state[i] = message[i]

numberOfRounds = 1
keyExpansion()
addRoundKey(state, key)
  for round in range(numberOfRounds):
    subBytes(state)
    shiftRows(state)
    mixColumns()
    addRoundKey(state, key)
# Final round
subBytes(state)
shiftRows(state)
addRoundKey(state, key)



def main():
 message = input("Enter a message: ")
 key = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
 encrypt(message, key)


if __name__ == "__main__":
 main()

标签: python-3.xencryptionaes

解决方案


推荐阅读