Пример #1
0
        public void TestAes2()
        {
            AES2 aes = new AES2()
            {
                // 密钥
                Key = @")O[NB]6,YF}+efcaj{+oESb9d8>Z'e9M",

                // 向量
                IV = @"L+\~f4,Ir)b$=pkf"
            };



            Console.WriteLine("---------- AES : CBC ----------");

            string source = "测试 AES 加密处理!";

            Console.WriteLine("原始字符:{0}", source);


            string step1 = aes.AESEncryptCBC(source);

            Console.WriteLine("AES 加密后结果:{0}", step1);


            string step2 = aes.AESDecryptCBC(step1);

            Console.WriteLine("AES 解密后结果:{0}", step2);



            // 注意:
            // 如果在开发过程中, 遇到   指定的初始化向量(IV)与此算法的块大小不匹配。
            // 而这个 IV 又是对方提供的,自己不能修改的。
            // 这种情况下, 大概率是使用 ECB 模式进行处理。


            Console.WriteLine("---------- AES : ECB ----------");


            source = "测试 AES 加密处理!";
            Console.WriteLine("原始字符:{0}", source);


            step1 = aes.AESEncryptECB(source);
            Console.WriteLine("AES 加密后结果:{0}", step1);


            step2 = aes.AESDecryptECB(step1);
            Console.WriteLine("AES 解密后结果:{0}", step2);



            Console.WriteLine("---------- AES : ECB (长度为12的 Key/IV)----------  这个类会报错, 提示 Key 不符合。");
        }
Пример #2
0
        public void TestMySql()
        {
            Console.WriteLine();
            Console.WriteLine("----- C# 与 Mysql 的 AES_ENCRYPT. -----");

            AES2 aes = new AES2()
            {
                // 密钥
                Key = @"0123456789ABCDEF",

                // 向量
                IV = @"0000000000000000"
            };


            // SELECT
            // HEX(AES_ENCRYPT('C0013_AES.Sample', '0123456789ABCDEF')) AS hex,
            // to_base64(AES_ENCRYPT('C0013_AES.Sample', '0123456789ABCDEF')) as base64;

            // 616ADDD573E60A22F3C539696DBFDA1234AF336C9F031B3556738C63E61EA2F6	YWrd1XPmCiLzxTlpbb/aEjSvM2yfAxs1VnOMY+YeovY=


            string source = "C0013_AES.Sample";

            Console.WriteLine("原始字符:{0}", source);


            string step1 = aes.AESEncryptECB(source);

            Console.WriteLine("AES 加密后结果:{0}", step1);

            byte[] data = Convert.FromBase64String(step1);
            foreach (var d in data)
            {
                Console.Write("{0:X2}", d);
            }
            Console.WriteLine();


            string step2 = aes.AESDecryptECB(step1);

            Console.WriteLine("AES 解密后结果:{0}", step2);
        }