给定一个位向量 V = (101101) 和一个置换函数:F(x) = (a*x + b) mod p。其中a和b是随机数,p是素数。如何计算向量 V 的排列?F(x) 是否将 V 作为一个完整的值,或者我应该使用 V 中的每一位作为函数的 ax?
问问题
602 次
2 回答
2
是的,为了置换位向量,然后取每个位并对其应用置换函数。
于 2013-06-20T16:33:05.910 回答
1
在该定义中,置换函数为向量中的每个条目提供新位置。例如对于 a=2, b=0, p=7,函数给出 {0,1,2,3,4,5,6}->{0,2,4,6,1,3,5}。
使用此函数,可以置换 7 个元素的任何向量,将 {a,b,c,d,e,f,g} 转换为 {a,c,e,g,b,d,f}。
这仅在向量的大小等于素数 p 时才有效。因此,对于位向量,将位置 n 处的每个元素移动到位置 a*n+b mod p。
这也适用于非素数 p,只要 a 和 b 与 p 互质。
于 2013-06-25T11:55:06.837 回答