• silverlight字符串加密之二


    public static class Cryptography
        {

            /// <summary>
            /// Incrypt the input using password provided
            /// </summary>
            /// <param name="input">Input string to encrypt</param>
            /// <param name="password">Password to use</param>
            /// <returns>Encrypted string</returns>
            public static string Encrypt(string input, string password)
            {

                string data = input;
                byte[] utfdata = UTF8Encoding.UTF8.GetBytes(data);
                byte[] saltBytes = UTF8Encoding.UTF8.GetBytes(password);

                // Our symmetric encryption algorithm
                AesManaged aes = new AesManaged();

                // We're using the PBKDF2 standard for password-based key generation
                Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(password, saltBytes);

                // Setting our parameters
                aes.BlockSize = aes.LegalBlockSizes[0].MaxSize;
                aes.KeySize = aes.LegalKeySizes[0].MaxSize;
                aes.Key = rfc.GetBytes(aes.KeySize / 8);
                aes.IV = rfc.GetBytes(aes.BlockSize / 8);

                // Encryption
                ICryptoTransform encryptTransf = aes.CreateEncryptor();

                // Output stream, can be also a FileStream
                MemoryStream encryptStream = new MemoryStream();
                CryptoStream encryptor = new CryptoStream(encryptStream, encryptTransf, CryptoStreamMode.Write);

                encryptor.Write(utfdata, 0, utfdata.Length);
                encryptor.Flush();
                encryptor.Close();

                byte[] encryptBytes = encryptStream.ToArray();
                string encryptedString = Convert.ToBase64String(encryptBytes);

                return encryptedString;
            }

            /// <summary>
            /// Decrypt string using password provided
            /// </summary>
            /// <param name="base64Input">Input to decrypt</param>
            /// <param name="password">Password to use</param>
            /// <returns>Decrypted string</returns>
            public static string Decrypt(string base64Input, string password)
            {

                byte[] encryptBytes = Convert.FromBase64String(base64Input);
                byte[] saltBytes = Encoding.UTF8.GetBytes(password);

                // Our symmetric encryption algorithm
                AesManaged aes = new AesManaged();

                // We're using the PBKDF2 standard for password-based key generation
                Rfc2898DeriveBytes rfc = new Rfc2898DeriveBytes(password, saltBytes);

                // Setting our parameters
                aes.BlockSize = aes.LegalBlockSizes[0].MaxSize;
                aes.KeySize = aes.LegalKeySizes[0].MaxSize;
                aes.Key = rfc.GetBytes(aes.KeySize / 8);
                aes.IV = rfc.GetBytes(aes.BlockSize / 8);

                // Now, decryption
                ICryptoTransform decryptTrans = aes.CreateDecryptor();

                // Output stream, can be also a FileStream
                MemoryStream decryptStream = new MemoryStream();
                CryptoStream decryptor = new CryptoStream(decryptStream, decryptTrans, CryptoStreamMode.Write);

                decryptor.Write(encryptBytes, 0, encryptBytes.Length);
                decryptor.Flush();
                decryptor.Close();

                byte[] decryptBytes = decryptStream.ToArray();
                string decryptedString = UTF8Encoding.UTF8.GetString(decryptBytes, 0, decryptBytes.Length);
                return decryptedString;
            }
        }

  • 相关阅读:
    SQL Join的一些总结
    大型网站架构演变和知识体系
    从零开始学习jQuery (九) jQuery工具函数
    对称加密(1) 对称加密基本原理
    javascript 几个字符串截取函数
    .net 登录博客园 并且发表文章一篇
    304 Not Modified 与 IfModifiedSince 及 CacheControl
    代码设置输出缓存头的一些问题记录
    js事件冒泡,默认行为,阻止冒泡
    http协议中的一些基础知识
  • 原文地址:https://www.cnblogs.com/jacle169/p/2810095.html
Copyright © 2020-2023  润新知