python-3.x - 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()
解决方案
推荐阅读
- logging - SLF4J 中的自定义级别日志记录
- python - 如何使用打印格式调整字符串的字段长度?
- automation - Windows 的基于流的编程?
- android - Room - SELECT 不返回任何数据
- css - 在 Angular 中明智地加载 CSS 模块
- mocking - pollEnrich 的骆驼模拟端点
- python - pandas 按三天、两周或四个月分组作为时间戳
- ios - 用户默认值在一段时间后更改为以前的值 - Swift
- sql - SQL 获取所有原始基础 GROUP BY
- javascript - window.addEventListener 导致浏览器速度变慢 - 仅限 Firefox。为什么?