public static uint Weinberger(byte[] Key) { int taille = Key.Length; uint M = 109; uint temp = 0; uint Res = 0; for (int i = 0; i < taille; i++) { Res = (Res * 16) + (uint) Key[i]; if (Res > 268435456) { temp = (Res / 268435456) * 268435456; // 268435456 = 228 Res = Res + (temp / 16777216); // 16777216 = 224 Res = Res - temp; } } return (Res);// % M); }