static public string[] Decode(string[] C, Program.Key secretkey) { //Console.Write("Secret: " + secretkey.keynum +"|"); string[] M = new string[secretkey.n - 1]; BigInteger bi; BigInteger n_ = (BigInteger)secretkey.n; for (int i = 0; i < M.Length; i++) { bi = (BigInteger)Math.Pow((Convert.ToInt32(C[i])), secretkey.keynum); M[i] = (bi % n_).ToString(); } return(M); }
static public string[] Encode(string[] M, Program.Key openkey) { //C(i)=(M(I)^e)mod n, где bi=M(i)^e //Console.Write("Open: " + openkey.keynum + "|"); string[] C = new string[openkey.n - 1]; BigInteger bi; BigInteger n_ = (BigInteger)openkey.n; for (int i = 0; i < M.Length; i++) { bi = (BigInteger)Math.Pow(i, openkey.keynum); C[i] = (bi % n_).ToString(); } return(C); }