示例#1
0
        public EncryptionDecryptionModel EncryptAndDecrypt(string username, string password)
        {
            var returnValue = new EncryptionDecryptionModel();

            // AES
            using (var aes = new AesManaged())
            {
                // encrypt
                byte[] encryptedUserName = _encryptionService.SymmetricEncryption(username, aes.Key, aes.IV);
                returnValue.EncryptedUserName = Encoding.UTF8.GetString(encryptedUserName);

                // decrypt
                string decriptedUserName = _decryptionService.SymmetricDecryption(encryptedUserName, aes.Key, aes.IV);

                // check decryption
                if (username != decriptedUserName)
                {
                    throw new Exception("There was a problem encrypting the user name");
                }
            }

            // RSA
            using (var RSA = new RSACryptoServiceProvider())
            {
                var ByteConverter = new UnicodeEncoding();

                // encrypt
                byte[] plaintext     = ByteConverter.GetBytes(password);
                byte[] encryptedtext = _encryptionService.AsymmetricEncryption(plaintext, RSA.ExportParameters(false), false);
                returnValue.EncryptedPassword = ByteConverter.GetString(encryptedtext);

                // decrypt
                byte[] decryptedText     = _decryptionService.AsymmetricDecryption(encryptedtext, RSA.ExportParameters(true), false);
                var    decriptedPassword = ByteConverter.GetString(decryptedText);

                // check decryption
                if (password != decriptedPassword)
                {
                    throw new Exception("There was a problem encrypting the password");
                }
            }

            return(returnValue);
        }