コード例 #1
0
ファイル: AuthCode.cs プロジェクト: kchang06/GFAlarm
        public static byte[] RC4(byte[] input, string pass)
        {
            bool flag = input == null || pass == null;

            byte[] result;
            if (flag)
            {
                result = null;
            }
            else
            {
                byte[] array = new byte[input.Length];
                byte[] key   = AuthCode.GetKey(AuthCode.encoding.GetBytes(pass), 256);
                long   num   = 0L;
                long   num2  = 0L;
                for (int i = 0; i < input.Length; i += 1)
                {
                    num  = (num + 1L) % key.Length;
                    num2 = (num2 + key[num]) % key.Length;
                    checked
                    {
                        byte b = key[num];
                        key[num]  = key[num2];
                        key[num2] = b;

                        byte b2 = input[i];
                        byte b3 = key[(key[num] + key[num2]) % key.Length];
                        array[i] = (byte)(b2 ^ b3);
                    }
                }
                result = array;
            }
            return(result);
        }