在 Python 中生成新的 IV
Generate new IV in Python
我有一个100位的列表,例如:
X=''.join([random.choice(['0', '1']) for i in range(100)])
X=[0,1,0,1,1...]
在循环开始时,我生成了长度为n的随机初始化向量:
Xlen=5
IV=''.join([random.choice(['0', '1']) for i in range(Xlen)])
问题是我需要在之前的X[n]
和IV[n]
的基础上使用位加函数生成新的IV。请注意 n=5
.
例如 X[0]=[0,1,0,0,1]
和 IV[0]=[1,0,1,0,1]
。新的 IV
应更新为 X[0]+IV[0]=IV[1] which will produce the result of [1,1,1,1,0]
。
X[0]
和IV[0]
是第0周期的位和初始化向量的列表。
并且生成新IV的操作将在下一个n=5
中不断重复,直到n=100
.
请帮我解决这个问题。谢谢。
我想你想要的是一个对两个整数列表(IV 和部分数据)进行异或并生成它的异或版本的函数。使用python
中的运算符^
可以实现该功能
我在这里使用 'bits' 作为整数,但是如果你需要使用字符串,你可以在调用函数
之前使用 int()
转换每个字符
def get_new_iv_value(prev_iv, X):
new_iv = [x ^ y for (x,y) in zip(prev_iv, X)]
return new_iv
下面是一个示例,说明如何使用此函数为 X 的每 5 个元素计算新的 IV
# Create X with 10 'bits' (integers with values 0 or 1)
X = [random.randint(0,1) for i in range(10)]
# Set initial IV with size 5
IV = [1,0,1,0,1]
# This will calculate one new IV for each 5 elements in X
for n in range(0, 100, 5):
IV = get_new_iv_value(IV, X[n:n+5])
结果是这样的:
IV[0] = [1, 0, 1, 0, 1]
X = [1, 0, 0, 0, 0, 0, 1, 1, 0, 1]
IV[1] = IV[0] + X[0:5]
[0, 0, 1, 0, 1] = [1, 0, 1, 0, 1] + [1, 0, 0, 0, 0]
IV[2] = IV[1] + X[5:10]
[0, 1, 0, 0, 0] = [0, 0, 1, 0, 1] + [0, 1, 1, 0, 1]
我有一个100位的列表,例如:
X=''.join([random.choice(['0', '1']) for i in range(100)])
X=[0,1,0,1,1...]
在循环开始时,我生成了长度为n的随机初始化向量:
Xlen=5
IV=''.join([random.choice(['0', '1']) for i in range(Xlen)])
问题是我需要在之前的X[n]
和IV[n]
的基础上使用位加函数生成新的IV。请注意 n=5
.
例如 X[0]=[0,1,0,0,1]
和 IV[0]=[1,0,1,0,1]
。新的 IV
应更新为 X[0]+IV[0]=IV[1] which will produce the result of [1,1,1,1,0]
。
X[0]
和IV[0]
是第0周期的位和初始化向量的列表。
并且生成新IV的操作将在下一个n=5
中不断重复,直到n=100
.
请帮我解决这个问题。谢谢。
我想你想要的是一个对两个整数列表(IV 和部分数据)进行异或并生成它的异或版本的函数。使用python
中的运算符^
可以实现该功能
我在这里使用 'bits' 作为整数,但是如果你需要使用字符串,你可以在调用函数
之前使用int()
转换每个字符
def get_new_iv_value(prev_iv, X):
new_iv = [x ^ y for (x,y) in zip(prev_iv, X)]
return new_iv
下面是一个示例,说明如何使用此函数为 X 的每 5 个元素计算新的 IV
# Create X with 10 'bits' (integers with values 0 or 1)
X = [random.randint(0,1) for i in range(10)]
# Set initial IV with size 5
IV = [1,0,1,0,1]
# This will calculate one new IV for each 5 elements in X
for n in range(0, 100, 5):
IV = get_new_iv_value(IV, X[n:n+5])
结果是这样的:
IV[0] = [1, 0, 1, 0, 1]
X = [1, 0, 0, 0, 0, 0, 1, 1, 0, 1]
IV[1] = IV[0] + X[0:5]
[0, 0, 1, 0, 1] = [1, 0, 1, 0, 1] + [1, 0, 0, 0, 0]
IV[2] = IV[1] + X[5:10]
[0, 1, 0, 0, 0] = [0, 0, 1, 0, 1] + [0, 1, 1, 0, 1]