zoukankan      html  css  js  c++  java
  • 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;
            }
        }

  • 相关阅读:
    Android开发进阶——自定义View的使用及其原理探索
    Android开发——通过wifi接收IPCamera视频流
    (数据科学学习手札84)基于geopandas的空间数据分析——空间计算篇(上)
    (数据科学学习手札83)基于geopandas的空间数据分析——geoplot篇(下)
    (数据科学学习手札82)基于geopandas的空间数据分析——geoplot篇(上)
    (数据科学学习手札81)conda+jupyter玩转数据科学环境搭建
    (数据科学学习手札80)用Python编写小工具下载OSM路网数据
    (数据科学学习手札79)基于geopandas的空间数据分析——深入浅出分层设色
    实用的Python(3)超简单!基于Python搭建个人“云盘”
    (数据科学学习手札78)基于geopandas的空间数据分析——基础可视化
  • 原文地址:https://www.cnblogs.com/jacle169/p/2810095.html
Copyright © 2011-2022 走看看