「デジタル・セキュア・パズル 第2章 (2023/03/11)」


デジタルで使える暗号を考えます。









結構意外な事実ですが。

  m = 0~17020
の範囲の数に対しては
  m2 = (m × 4402 × 483 × 58 × 8070) % 17021
をすると。

必ず
  m2==m
が成立。
元のmが戻ってきます。



int mod = 17021;
for (int m=0;m<mod;m++)
{
  var x = m;
  x = (x * 4402) % mod;
  x = (x * 483) % mod;
  x = (x * 58) % mod;
  x = (x * 8070) % mod;

  ASSERT(x == m);
}

//一例: (2023*4402*483*58*8070)
// == 2013235500853080
// == 118279507717 * 17021 + 2023



絶対に! mが戻ってきます。^^A;

さーて。何故でしょうか?