「デジタル・セキュア・パズル 第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;
さーて。何故でしょうか?