Пример #1
0
        public void Rsa_Encrypt_LengthLimit_Test(RsaSize size)
        {
            var rsaKey = EncryptProvider.CreateRsaKey(size);

            var publicKey  = rsaKey.PublicKey;
            var privateKey = rsaKey.PrivateKey;

            //Act
            var rawStr = "eyJNb2R1bHVzIjoidHVSL1V1dFVSV0RSVElDYTFFRDcraUF2MUVnQUl0dC9oNkhHc0x6SG80QXAyVVdqWGtvRkp4T1NuRmdhY3d4cWM0WUg5UDdRaVIxQ1lCK3lvMnJUbkhZbVIrYWs2V3RJRU1YNWtmTTJrWHBNUVY2aFBrd0FxRTFpU1pWRUM2eXlmeTNGZUJTVmNnVlUwMFpJMGozbzhqT3ZMOXhneGhmT1J1eTcwM1RUbXdFPSIsIkV4cG9uZW50IjoiQVFBQiIsIlAiOiI3MVNIYVRnK2JvOXhzRnEzSXlrcHRFUXVHUXZTNDNEUDFoM04xcVlBN1E1VHpoS0IydEc1RWxvamtYTkF4d0VVVStxSnZMWDBxTHdzd09zRkhaL3lydz09IiwiUSI6Inc2R2ltem84a0lUL0xuS2U0Sk5QTUt2YTlVVzBSZUZlVzA5U1ZtVnFVWS9VeHl2eU9kemowd3JzTTZib1ZCU1JnZi9SbUZwRUZ1bUZTVW9yVWkxNVR3PT0iLCJEUCI6Im9yNXpPaXloMzZLeFozKzRhek54aFlDYmJES3JIRGc1VEZ1Ri9rRngvY0V4WWI4YUNFZDJ0ekVPWUxqandxOU1PR2dUYzN5enV3NEN6TWpEK01vc1J3PT0iLCJEUSI6InMvNGhhQVM2K0pVRlhDemxkT2JVTTRuTEdXUWFxempoNGMwbmlvb2d1ZzVGelVMbnlNa3RiRjFlV1YrMTNyWlY4bS8yM2VBZlNaMXRuckw1RE5EK0RRPT0iLCJJbnZlcnNlUSI6IlBPSkRGUk03MmVxd0R3TytldDFpTzIwTWlQcFVEUS93N1hEMHBMLzJWYTE4OEgrRGlaK0NuZDJRdnFYZyt4NFdNZSsrVlVNYXo2bWM3V1g4WnBaWW9RPT0iLCJEIjoiWE1QUEZPYktDcHFON21pNG4zb0tsSmFveTlwdFAwRG9FWXBydGc4NmoyS2RWMWZzQWhJM1JOZTNvRmRMcXhrY0VWWmxTTTNLUmhHeUxnRkY0WDk0cnVIYjBQeC9LZVQxMW1BeDNvQ2NCRVlWelhabXlIUHQzWCs2dlBMZzdmYUhtRmlxK3N0Y2NMTlBNSEdna2lkWTF6NGtiTXZwZnBlOWxhN0VMWUdKM21VPSJ9";

            //RSAEncryptionPaddingMode is Pkcs1
            var padding   = RSAEncryptionPadding.Pkcs1;
            var maxLength = ((int)size - 384) / 8 + 37;
            var rawData   = rawStr.Substring(0, maxLength);

            var encryptedStr = EncryptProvider.RSAEncrypt(publicKey, rawData, padding);
            var decryptedStr = EncryptProvider.RSADecrypt(privateKey, encryptedStr, padding);

            //RSAEncryptionPaddingMode is Oaep
            padding = RSAEncryptionPadding.OaepSHA1;

            var sha1   = "oaep".SHA1();
            var length = sha1.Length;

            maxLength = (int)size / 8 - 42;   //214 //40
            rawData   = rawStr.Substring(0, maxLength);

            encryptedStr = EncryptProvider.RSAEncrypt(publicKey, rawData, padding);
            decryptedStr = EncryptProvider.RSADecrypt(privateKey, encryptedStr, padding);
            Assert.Equal(decryptedStr, rawData);


            padding = RSAEncryptionPadding.OaepSHA256;

            maxLength = (int)size / 8 - 66;   //190   //64
            rawData   = rawStr.Substring(0, maxLength);

            encryptedStr = EncryptProvider.RSAEncrypt(publicKey, rawData, padding);
            decryptedStr = EncryptProvider.RSADecrypt(privateKey, encryptedStr, padding);

            Assert.Equal(decryptedStr, rawData);

            padding   = RSAEncryptionPadding.OaepSHA384;
            maxLength = (int)size / 8 - 98;  //158  //96
            rawData   = rawStr.Substring(0, maxLength);

            encryptedStr = EncryptProvider.RSAEncrypt(publicKey, rawData, padding);
            decryptedStr = EncryptProvider.RSADecrypt(privateKey, encryptedStr, padding);

            Assert.Equal(decryptedStr, rawData);

            padding   = RSAEncryptionPadding.OaepSHA512;
            maxLength = (int)size / 8 - 130; //126  // 128
            rawData   = rawStr.Substring(0, maxLength);

            encryptedStr = EncryptProvider.RSAEncrypt(publicKey, rawData, padding);
            decryptedStr = EncryptProvider.RSADecrypt(privateKey, encryptedStr, padding);

            Assert.Equal(decryptedStr, rawData);
        }
Пример #2
0
        public void Rsa_From_Pkcs8_Test()
        {
            //Act
            var rawStr      = "test";
            var pkcs1Result = EncryptProvider.RsaToPkcs8();

            var publicKey  = pkcs1Result.publicPkcs8;
            var privateKey = pkcs1Result.privatePkcs8;

            var rsa1    = EncryptProvider.RSAFromPublicPkcs(publicKey);
            var rsaKey1 = EncryptProvider.CreateRsaKey(rsa1, false);

            var rsa2    = EncryptProvider.RSAFromPrivatePkcs8(privateKey);
            var rsaKey2 = EncryptProvider.CreateRsaKey(rsa2);

            var encrytpedStr = EncryptProvider.RSAEncrypt(rsaKey1.PublicKey, rawStr);
            var decryptedStr = EncryptProvider.RSADecrypt(rsaKey2.PrivateKey, encrytpedStr);

            //Assert
            Assert.NotNull(rsa1);
            Assert.NotNull(rsa2);
            Assert.NotEmpty(encrytpedStr);
            Assert.NotEmpty(decryptedStr);
            Assert.Equal(decryptedStr, rawStr);
        }
Пример #3
0
        public void Rsa_Encrypt_EmptyData_Test()
        {
            var rsaKey    = EncryptProvider.CreateRsaKey();
            var srcString = string.Empty;

            //Assert
            Assert.Throws <ArgumentException>(() => EncryptProvider.RSAEncrypt(rsaKey.PublicKey, srcString));
        }
Пример #4
0
        public void Rsa_Encrypt_Success_Test(RsaSize size)
        {
            var rsaKey    = EncryptProvider.CreateRsaKey(size);
            var srcString = "rsa encrypt";

            //Act
            var encrypted = EncryptProvider.RSAEncrypt(rsaKey.PublicKey, srcString);

            //Assert
            Assert.NotEmpty(encrypted);
        }
Пример #5
0
        public void Rsa_Encrypt_WithPadding_Test(RsaSize size)
        {
            var rsaKey    = EncryptProvider.CreateRsaKey(size);
            var srcString = "rsa encrypt";

            //Act
            var encrypted = EncryptProvider.RSAEncrypt(rsaKey.PublicKey, srcString, RSAEncryptionPadding.Pkcs1);

            //Assert
            Assert.NotEmpty(encrypted);
        }
Пример #6
0
        public void Rsa_From_JsonString_Test()
        {
            var rsaKey = EncryptProvider.CreateRsaKey();

            var publicKey  = rsaKey.PublicKey;
            var privateKey = rsaKey.PrivateKey;

            var rsa = EncryptProvider.RSAFromString(publicKey);

            Assert.NotNull(rsa);
        }
Пример #7
0
        public void Create_RSAKey_Test(RsaSize size)
        {
            //Act
            var rsaKey = EncryptProvider.CreateRsaKey(size);

            //Assert
            Assert.NotNull(rsaKey);
            Assert.NotEmpty(rsaKey.PublicKey);
            Assert.NotEmpty(rsaKey.PrivateKey);
            Assert.NotEmpty(rsaKey.Exponent);
            Assert.NotEmpty(rsaKey.Modulus);
        }
Пример #8
0
        /// <summary>
        ///     newCore
        /// </summary>
        /// <returns></returns>
        public static async Task <RsaKey> GetRsaKeyAsync()
        {
            var newRsaKey = EncryptProvider.CreateRsaKey();

            var rsaKey = new RsaKey
            {
                PrivateKey = newRsaKey.PrivateKey,
                PublicKey  = newRsaKey.PublicKey
            };

            return(await Task.FromResult(rsaKey));
        }
Пример #9
0
        private static void GenerateRSAKeys()
        {
            var rsa = EncryptProvider.CreateRsaKey();

            _publicKey  = rsa.PublicKey;
            _privateKey = rsa.PrivateKey;
            Console.WriteLine("--- New RSA Keys Generated ----");
            Console.WriteLine("--- ---- 2048 BitSize ----- ---");
            ShowPublicKey();
            ShowPrivateKey();
            _areKeysAvailable = true;
        }
Пример #10
0
        /// <summary>
        /// 生成 RSA 公钥和私钥
        /// </summary>
        /// <param name="publicKey">公钥</param>
        /// <param name="privateKey">私钥</param>
        /// <param name="rsaSize">加密长度</param>
        /// <param name="rsaKeyType">密钥序列化格式(默认Json)</param>
        public static void GenerateRSAKeys(out string publicKey, out string privateKey, RsaSize rsaSize = RsaSize.R2048, RsaKeyType rsaKeyType = RsaKeyType.JSON)
        {
            //using (var rsa = new RSACryptoServiceProvider())
            //{
            //    publicKey = rsa.ToXmlString(false);
            //    privateKey = rsa.ToXmlString(true);
            //}
            var key = EncryptProvider.CreateRsaKey(rsaSize, rsaKeyType);

            publicKey  = key.PublicKey;
            privateKey = key.PrivateKey;
        }
Пример #11
0
        public void Rsa_Decrypt_Success_Test(RsaSize size)
        {
            var rsaKey    = EncryptProvider.CreateRsaKey(size);
            var srcString = "rsa decrypt";

            //Act
            var encrypted = EncryptProvider.RSAEncrypt(rsaKey.PublicKey, srcString);
            var decrypted = EncryptProvider.RSADecrypt(rsaKey.PrivateKey, encrypted);

            //Assert
            Assert.NotEmpty(encrypted);
            Assert.NotEmpty(decrypted);
            Assert.Equal(srcString, decrypted);
        }
Пример #12
0
        public void Rsa_Encrypt_OutofMaxLength_Exception_Test()
        {
            //Act
            var rawStr = "eyJNb2R1bHVzIjoidHVSL1V1dFVSV0RSVElDYTFFRDcraUF2MUVnQUl0dC9oNkhHc0x6SG80QXAyVVdqWGtvRkp4T1NuRmdhY3d4cWM0WUg5UDdRaVIxQ1lCK3lvMnJUbkhZbVIrYWs2V3RJRU1YNWtmTTJrWHBNUVY2aFBrd0FxRTFpU1pWRUM2eXlmeTNGZUJTVmNnVlUwMFpJMGozbzhqT3ZMOXhneGhmT1J1eTcwM1RUbXdFPSIsIkV4cG9uZW50IjoiQVFBQiIsIlAiOiI3MVNIYVRnK2JvOXhzRnEzSXlrcHRFUXVHUXZTNDNEUDFoM04xcVlBN1E1VHpoS0IydEc1RWxvamtYTkF4d0VVVStxSnZMWDBxTHdzd09zRkhaL3lydz09IiwiUSI6Inc2R2ltem84a0lUL0xuS2U0Sk5QTUt2YTlVVzBSZUZlVzA5U1ZtVnFVWS9VeHl2eU9kemowd3JzTTZib1ZCU1JnZi9SbUZwRUZ1bUZTVW9yVWkxNVR3PT0iLCJEUCI6Im9yNXpPaXloMzZLeFozKzRhek54aFlDYmJES3JIRGc1VEZ1Ri9rRngvY0V4WWI4YUNFZDJ0ekVPWUxqandxOU1PR2dUYzN5enV3NEN6TWpEK01vc1J3PT0iLCJEUSI6InMvNGhhQVM2K0pVRlhDemxkT2JVTTRuTEdXUWFxempoNGMwbmlvb2d1ZzVGelVMbnlNa3RiRjFlV1YrMTNyWlY4bS8yM2VBZlNaMXRuckw1RE5EK0RRPT0iLCJJbnZlcnNlUSI6IlBPSkRGUk03MmVxd0R3TytldDFpTzIwTWlQcFVEUS93N1hEMHBMLzJWYTE4OEgrRGlaK0NuZDJRdnFYZyt4NFdNZSsrVlVNYXo2bWM3V1g4WnBaWW9RPT0iLCJEIjoiWE1QUEZPYktDcHFON21pNG4zb0tsSmFveTlwdFAwRG9FWXBydGc4NmoyS2RWMWZzQWhJM1JOZTNvRmRMcXhrY0VWWmxTTTNLUmhHeUxnRkY0WDk0cnVIYjBQeC9LZVQxMW1BeDNvQ2NCRVlWelhabXlIUHQzWCs2dlBMZzdmYUhtRmlxK3N0Y2NMTlBNSEdna2lkWTF6NGtiTXZwZnBlOWxhN0VMWUdKM21VPSJ9";

            var rsaKey    = EncryptProvider.CreateRsaKey();
            var publicKey = rsaKey.PublicKey;

            //Assert
            Assert.Throws <OutofMaxlengthException>(() =>
            {
                EncryptProvider.RSAEncrypt(publicKey, rawStr);
            });
        }
Пример #13
0
#pragma warning restore CS1591


        /// <summary>
        /// 生成 RSA 公钥和私钥
        /// </summary>
        /// <param name="rsaSize">密钥长度</param>
        public static RSAKey GenerateRSAKeys(RsaSize rsaSize = RsaSize.R2048)
        {
#if NET461
            using (var rsa = new RSACryptoServiceProvider())
                return new RSAKey()
                       {
                           PublicKey  = rsa.ToXmlString(false),
                           PrivateKey = rsa.ToXmlString(true),
                           Exponent   = rsa.ExportParameters(false).Exponent.ToHexString(),
                           Modulus    = rsa.ExportParameters(false).Modulus.ToHexString()
                       };
#else
            return((RSAKey)EncryptProvider.CreateRsaKey((NETCore.Encrypt.RsaSize)rsaSize));
#endif
        }
Пример #14
0
        public void TestRSA()
        {
            var rsaKey = EncryptProvider.CreateRsaKey();

            var publicKey  = rsaKey.PublicKey;
            var privateKey = rsaKey.PrivateKey;

            var plaintext = "CARLOS ORLEY TIRADO PABON";

            var encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext, RSAEncryptionPadding.Pkcs1);

            var decrypted = EncryptProvider.RSADecrypt(privateKey, encrypted, RSAEncryptionPadding.Pkcs1);

            Assert.AreEqual(plaintext, decrypted);
        }
Пример #15
0
        public static CryptRSAKey GenerateRSAKey(RsaKeySize keySize)
        {
            var rsaKey = EncryptProvider.CreateRsaKey(
                (RsaSize)(Enum.Parse(typeof(RsaSize), $"{(int)keySize}")));    //default is 2048

            // var rsaKey = EncryptProvider.CreateRsaKey(RsaSize.R3072);

            return(new CryptRSAKey()
            {
                Exponent = rsaKey.Exponent,
                Modulus = rsaKey.Modulus,
                PublicKey = rsaKey.PublicKey,
                PrivateKey = rsaKey.PrivateKey,
            });
        }
Пример #16
0
        public void Rsa_SignAndVerify_Test()
        {
            //Act
            var rawStr = "123456";

            var rsaKey     = EncryptProvider.CreateRsaKey();
            var privateKey = rsaKey.PrivateKey;
            var publicKey  = rsaKey.PublicKey;

            var signStr = EncryptProvider.RSASign(rawStr, privateKey);

            var result = EncryptProvider.RSAVerify(rawStr, signStr, publicKey);

            //Assert
            Assert.NotEmpty(signStr);
            Assert.True(result);
        }
Пример #17
0
        public void Rsa_From_Pem_Test()
        {
            //Act
            var pemPublicKey = @"
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxnBvS8cdsnAev2sRDRYWxznm1
QxZzaypfNXLvK7CDGk8TR7K+Pzsa+tpJfoyN/Z4B6xdlpsERo2Cu6AzolvrDLx5w
ZoI0kgdfaBMbUkdOB1m97zFYjKWoPeTskFzWZ3GHcQ3EXT0NJXXFXAskY45vEpbc
5qFgEhcPy3BMqHRibwIDAQAB
-----END PUBLIC KEY-----";

            var rsaFromPublickPem = EncryptProvider.RSAFromPem(pemPublicKey);

            var pemPrivateKey = @"
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCxnBvS8cdsnAev2sRDRYWxznm1QxZzaypfNXLvK7CDGk8TR7K+
Pzsa+tpJfoyN/Z4B6xdlpsERo2Cu6AzolvrDLx5wZoI0kgdfaBMbUkdOB1m97zFY
jKWoPeTskFzWZ3GHcQ3EXT0NJXXFXAskY45vEpbc5qFgEhcPy3BMqHRibwIDAQAB
AoGAAdwpqm7fxh0S3jOYpJULeQ45gL11dGX7Pp4CWHYzq1vQ14SDtFxYfnLWwGLz
499zvSoSHP1pvjPgz6lxy9Rw8dUxCgvh8VQydMQzaug2XD1tkmtcSWInwFKBAfQ7
rceleyD0aK8JHJiuzM1p+yIJ/ImGK0Zk2U/svqrdJrNR4EkCQQDo3d5iWcjd3OLD
38k1GALEuN17KNpJqLvJcIEJl0pcHtOiNnyy2MR/XUghDpuxwhrhudB/TvX4tuI0
MUeVo5fjAkEAw0D6m9jkwE5uuEYN/l/84rbQ79p2I7r5Sk6zbMyBOvgl6CDlJyxY
434DDm6XW7c55ALrnlratEW5HPiPxuHZBQJANnE4vtGy7nvn4Fd/mRQmAYwe695f
On1iefP9lxpx3huu6uvGN6IKPqS2alQZ/nMdCc0Be+IgC6fmNsGWtNtsdQJAJvB4
ikgxJqD9t8ZQ2CAwgM5Q0OTSlsGdIdKcOeB3DVmbxbV5vdw8RfJFjcVEbkgWRYDH
mKcp4rXc+wgfNFyqOQJATZ1I5ER8AZAn5JMMH9zK+6oFvhLUgKyWO18W+dbcFrBd
AzlTB+HHYEIyTmaDtXWAwgBvJNIHk4BbM1meCH4QnA==
-----END RSA PRIVATE KEY-----";

            var rsaFromPrivatePem = EncryptProvider.RSAFromPem(pemPrivateKey);

            //Assert
            Assert.NotNull(rsaFromPublickPem);
            Assert.NotNull(rsaFromPublickPem);
            Assert.Equal(rsaFromPublickPem.KeySize, rsaFromPrivatePem.KeySize);
            var privateKey = EncryptProvider.CreateRsaKey(rsaFromPrivatePem);
            var publicKey  = EncryptProvider.CreateRsaKey(rsaFromPublickPem, false);
            var raw        = "123123124";
            var signStr    = EncryptProvider.RSASign(raw, privateKey.PrivateKey);
            var result     = EncryptProvider.RSAVerify(raw, signStr, publicKey.PublicKey);

            Assert.True(result);
        }
Пример #18
0
        static void Main(string[] args)
        {
            var aesKey = EncryptProvider.CreateAesKey();
            var key    = aesKey.Key;
            var iv     = aesKey.IV;

            /*
             * var _max = 10000;
             *
             * var s1 = Stopwatch.StartNew();
             *
             * for (int i = 0; i < _max; i++)
             * {
             *  aesKey = EncryptProvider.CreateAesKey();
             * }
             * s1.Stop();
             *
             * var s2 = Stopwatch.StartNew();
             * for (int i = 0; i < _max; i++)
             * {
             *  aesKey = EncryptProvider.CreateAesKey(false);
             * }
             * s2.Stop();
             *
             * Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns"));
             * Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns"));
             * Console.Read();
             */

            var plaintext = "Hello world 123456789/*-+!@#$%^&*()-=_+";
            var encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv);
            var decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv);

            Console.WriteLine("Plaintext to encrypt: " + plaintext);
            Console.WriteLine();

            Console.WriteLine("** AES SecureRandom **");
            Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted);
            Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted);
            //Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();
            Console.WriteLine("** AES SecureRandom with Byte input/output **");
            byte[] bencrypted = EncryptProvider.AESEncrypt(Encoding.UTF8.GetBytes(plaintext), key, iv);
            byte[] bdecrypted = EncryptProvider.AESDecrypt(bencrypted, key, iv);

            Console.WriteLine("Encrypted " + " (Length: " + bencrypted.Length + ") " + Encoding.UTF8.GetString(bencrypted));
            Console.WriteLine("Decrypted " + " (Length: " + bdecrypted.Length + ") " + Encoding.UTF8.GetString(bdecrypted));
            //Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();

            Console.WriteLine("** AES Non-SecureRandom **");

            aesKey = EncryptProvider.CreateAesKey(false);
            key    = aesKey.Key;
            iv     = aesKey.IV;

            encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv);
            decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv);
            Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted);
            Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted);
            //Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();
            Console.WriteLine("** RSA **");
            var rsaKey = EncryptProvider.CreateRsaKey();

            var publicKey  = rsaKey.PublicKey;
            var privateKey = rsaKey.PrivateKey;

            //var exponent = rsaKey.Exponent;
            //var modulus = rsaKey.Modulus;

            encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext);

            encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext, RSAEncryptionPadding.Pkcs1);
            decrypted = EncryptProvider.RSADecrypt(privateKey, encrypted, RSAEncryptionPadding.Pkcs1);


            Console.WriteLine("Encrypted: " + encrypted);
            Console.WriteLine("Decrypted: " + decrypted);
            //Console.WriteLine("publicKey: {0} privateKey: {1}", publicKey, privateKey);

            Console.WriteLine();
            Console.WriteLine("** SHA **");
            Console.WriteLine("SHA1: " + EncryptProvider.Sha1(plaintext));
            Console.WriteLine("SHA256: " + EncryptProvider.Sha256(plaintext));
            Console.WriteLine("SHA384: " + EncryptProvider.Sha384(plaintext));
            Console.WriteLine("SHA512: " + EncryptProvider.Sha512(plaintext));

            Console.ReadKey();
        }
Пример #19
0
        static void Main(string[] args)
        {
            string str = "Hello World!";

            Console.WriteLine(str);

            Console.WriteLine("RSA__________________________________________________________________");
            var rsaKey     = EncryptProvider.CreateRsaKey(); //default is 2048
            var publicKey  = rsaKey.PublicKey;
            var privateKey = rsaKey.PrivateKey;
            //var exponent = rsaKey.Exponent;
            //var modulus = rsaKey.Modulus;
            string encrypted = EncryptProvider.RSAEncrypt(publicKey, str);

            Console.WriteLine(encrypted);
            string decrypted = EncryptProvider.RSADecrypt(privateKey, encrypted);

            Console.WriteLine(decrypted);
            //create rsa by private key
            RSA rsa = EncryptProvider.RSAFromString(privateKey);



            Console.WriteLine("MD5__________________________________________________________________");
            Console.WriteLine(EncryptProvider.Md5(str));

            Console.WriteLine("SHA1__________________________________________________________________");
            Console.WriteLine(EncryptProvider.Sha1(str));
            Console.WriteLine("SHA256__________________________________________________________________");
            Console.WriteLine(EncryptProvider.Sha256(str));
            Console.WriteLine("SHA384__________________________________________________________________");
            Console.WriteLine(EncryptProvider.Sha384(str));
            Console.WriteLine("SHA512__________________________________________________________________");
            Console.WriteLine(EncryptProvider.Sha512(str));

            string hmackey = "123";

            Console.WriteLine("HMAC-MD5__________________________________________________________________");
            Console.WriteLine(EncryptProvider.HMACMD5(str, hmackey));
            Console.WriteLine("HMAC-SHA1__________________________________________________________________");
            Console.WriteLine(EncryptProvider.HMACSHA1(str, hmackey));
            Console.WriteLine("HMAC-SHA256__________________________________________________________________");
            Console.WriteLine(EncryptProvider.HMACSHA256(str, hmackey));
            Console.WriteLine("HMAC-SHA384__________________________________________________________________");
            Console.WriteLine(EncryptProvider.HMACSHA384(str, hmackey));
            Console.WriteLine("HMAC-SHA512__________________________________________________________________");
            Console.WriteLine(EncryptProvider.HMACSHA512(str, hmackey));

            Console.WriteLine("BASE64__________________________________________________________________");
            encrypted = EncryptProvider.Base64Encrypt(str, System.Text.Encoding.UTF8);
            Console.WriteLine(encrypted);
            decrypted = EncryptProvider.Base64Decrypt(encrypted, System.Text.Encoding.UTF8);
            Console.WriteLine(decrypted);

            var aseKey = EncryptProvider.CreateAesKey();
            var key    = aseKey.Key;
            var iv     = aseKey.IV;

            Console.WriteLine("AES__________________________________________________________________");
            Console.WriteLine("key:" + key);
            Console.WriteLine("iv:" + iv);
            Console.WriteLine("Not IV");
            encrypted = EncryptProvider.AESEncrypt(str, key);
            Console.WriteLine(encrypted);
            Console.WriteLine(EncryptProvider.AESDecrypt(encrypted, key));
            Console.WriteLine("Have IV");
            encrypted = EncryptProvider.AESEncrypt(str, key, iv);
            Console.WriteLine(encrypted);
            Console.WriteLine(EncryptProvider.AESDecrypt(encrypted, key, iv));

            Console.WriteLine("EncryptExtensions______________________________________________________");
            Console.WriteLine(str.MD5());
            Console.WriteLine(str.SHA1());
            Console.WriteLine(str.SHA256());
            Console.WriteLine(str.SHA384());
            Console.WriteLine(str.SHA512());
            Console.WriteLine(str.HMACMD5(hmackey));
            Console.WriteLine(str.HMACSHA1(hmackey));
            Console.WriteLine(str.HMACSHA256(hmackey));
            Console.WriteLine(str.HMACSHA384(hmackey));
            Console.WriteLine(str.HMACSHA512(hmackey));
        }
Пример #20
0
        static void Main(string[] args)
        {
            var aesKey = EncryptProvider.CreateAesKey();
            var key    = aesKey.Key;
            var iv     = aesKey.IV;

            /*
             * var _max = 10000;
             *
             * var s1 = Stopwatch.StartNew();
             *
             * for (int i = 0; i < _max; i++)
             * {
             *  aesKey = EncryptProvider.CreateAesKey();
             * }
             * s1.Stop();
             *
             * var s2 = Stopwatch.StartNew();
             * for (int i = 0; i < _max; i++)
             * {
             *  aesKey = EncryptProvider.CreateAesKey(false);
             * }
             * s2.Stop();
             *
             * Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns"));
             * Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns"));
             * Console.Read();
             */

            var plaintext = "Hello world 123456789/*-+!@#$%^&*()-=_+";
            var encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv);
            var decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv);

            Console.WriteLine("Plaintext to encrypt: " + plaintext);
            Console.WriteLine();

            Console.WriteLine("** AES SecureRandom **");
            Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted);
            Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted);
            Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();
            Console.WriteLine("** AES SecureRandom with Byte input/output **");
            byte[] bencrypted = EncryptProvider.AESEncrypt(Encoding.UTF8.GetBytes(plaintext), key, iv);
            byte[] bdecrypted = EncryptProvider.AESDecrypt(bencrypted, key, iv);

            Console.WriteLine("Encrypted " + " (Length: " + bencrypted.Length + ") " + Encoding.UTF8.GetString(bencrypted));
            Console.WriteLine("Decrypted " + " (Length: " + bdecrypted.Length + ") " + Encoding.UTF8.GetString(bdecrypted));
            Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();

            Console.WriteLine("** AES Non-SecureRandom **");

            aesKey = EncryptProvider.CreateAesKey();
            key    = aesKey.Key;
            iv     = aesKey.IV;

            encrypted = EncryptProvider.AESEncrypt(plaintext, key, iv);
            decrypted = EncryptProvider.AESDecrypt(encrypted, key, iv);
            Console.WriteLine("Encrypted " + " (Length: " + encrypted.Length + ") " + encrypted);
            Console.WriteLine("Decrypted " + " (Length: " + decrypted.Length + ") " + decrypted);
            Console.WriteLine("Key: {0} IV: {1}", key, iv);

            Console.WriteLine();
            Console.WriteLine("** RSA **");
            var rsaKey = EncryptProvider.CreateRsaKey();

            var publicKey  = rsaKey.PublicKey;
            var privateKey = rsaKey.PrivateKey;

            //var exponent = rsaKey.Exponent;
            //var modulus = rsaKey.Modulus;

            encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext);

            encrypted = EncryptProvider.RSAEncrypt(publicKey, plaintext, RSAEncryptionPadding.Pkcs1);
            decrypted = EncryptProvider.RSADecrypt(privateKey, encrypted, RSAEncryptionPadding.Pkcs1);


            Console.WriteLine("Encrypted: " + encrypted);
            Console.WriteLine("Decrypted: " + decrypted);
            //Console.WriteLine("publicKey: {0} privateKey: {1}", publicKey, privateKey);

            Console.WriteLine();
            Console.WriteLine("** SHA **");
            Console.WriteLine("SHA1: " + EncryptProvider.Sha1(plaintext));
            Console.WriteLine("SHA256: " + EncryptProvider.Sha256(plaintext));
            Console.WriteLine("SHA384: " + EncryptProvider.Sha384(plaintext));
            Console.WriteLine("SHA512: " + EncryptProvider.Sha512(plaintext));


            Console.WriteLine();
            Console.WriteLine("** Test issues #25  https://github.com/myloveCc/NETCore.Encrypt/issues/25 **");

            rsaKey = EncryptProvider.CreateRsaKey();

            publicKey  = rsaKey.PublicKey;
            privateKey = rsaKey.PrivateKey;

            var testStr = "test issues #25 ";

            Console.WriteLine($"Test str:{testStr}");

            var saveDir = AppDomain.CurrentDomain.BaseDirectory;

            //save public key
            var publicKeySavePath = Path.Combine(saveDir, "privateKey.txt");

            if (File.Exists(publicKeySavePath))
            {
                File.Delete(publicKeySavePath);
            }
            using (FileStream fs = new FileStream(publicKeySavePath, FileMode.CreateNew))
            {
                fs.Write(Encoding.UTF8.GetBytes(privateKey));
            }

            //save encrypt text
            var encryptStr = EncryptProvider.RSAEncrypt(publicKey, testStr, RSAEncryptionPadding.Pkcs1);

            Console.WriteLine($"encryped str:{encryptStr}");
            var encryptSavePath = Path.Combine(saveDir, "encrypt.txt");

            if (File.Exists(encryptSavePath))
            {
                File.Delete(encryptSavePath);
            }

            using (FileStream fs = new FileStream(encryptSavePath, FileMode.CreateNew))
            {
                fs.Write(Encoding.UTF8.GetBytes(encryptStr));
            }

            Console.ReadKey();
        }