C#Md5加密,Silverlight字符串加密

C#  MD5加密

 

 

  #region 密码加密32位
    /// <summary>
    ///  密码加密32位
    /// </summary>
    /// <param name="password"></param>
    /// <returns></returns>
    public static string Create32BitMd5Password(string password)
    {
        return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile
(password, "MD5").ToLower();

    }
    #endregion

 

 

silverlight 字符串加密

 

 #region silverlight数据加密

 

        /**/

        /// <summary>

        /// 加密数据

        /// </summary>

        /// <param name="input">加密前的字符串</param>

        /// <returns>加密后的字符串</returns>

        public static string Encrypt(string input)

        {

            // 盐值

            string saltValue = "saltValue";

            // 密码值

            string pwdValue = "pwdValue";

 

            byte[] data = System.Text.UTF8Encoding.UTF8.GetBytes(input);

            byte[] salt = System.Text.UTF8Encoding.UTF8.GetBytes(saltValue);

 

            // AesManaged - 高级加密标准(AES) 对称算法的管理类

            System.Security.Cryptography.AesManaged aes = new System.Security.Cryptography.AesManaged();

 

            // Rfc2898DeriveBytes - 通过使用基于 HMACSHA1 的伪随机数生成器,实现基于密码的密钥派生功能 (PBKDF2 - 一种基于密码的密钥派生函数)

            // 通过 密码 和 salt 派生密钥

            System.Security.Cryptography.Rfc2898DeriveBytes rfc = new System.Security.Cryptography.Rfc2898DeriveBytes(pwdValue, salt);

 

            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);

 

            // 用当前的 Key 属性和初始化向量 IV 创建对称加密器对象

            System.Security.Cryptography.ICryptoTransform encryptTransform = aes.CreateEncryptor();

 

            // 加密后的输出流

            System.IO.MemoryStream encryptStream = new System.IO.MemoryStream();

 

            // 将加密后的目标流(encryptStream)与加密转换(encryptTransform)相连接

            System.Security.Cryptography.CryptoStream encryptor = new System.Security.Cryptography.CryptoStream

                (encryptStream, encryptTransform, System.Security.Cryptography.CryptoStreamMode.Write);

 

            // 将一个字节序列写入当前 CryptoStream (完成加密的过程)

            encryptor.Write(data, 0, data.Length);

            encryptor.Close();

 

            // 将加密后所得到的流转换成字节数组,再用Base64编码将其转换为字符串

            string encryptedString = Convert.ToBase64String(encryptStream.ToArray());

 

            return encryptedString;

        }

        #endregion

 

 #region silverlight密码解密

        /**/

        /// <summary>

        /// 解密数据

        /// </summary>

        /// <param name="input">加密后的字符串</param>

        /// <returns>加密前的字符串</returns>

        public string Decrypt(string input)

        {

            // 盐值(与加密时设置的值一致)

            string saltValue = "saltValue";

            // 密码值(与加密时设置的值一致)

            string pwdValue = "pwdValue";

 

            byte[] encryptBytes = Convert.FromBase64String(input);

            byte[] salt = Encoding.UTF8.GetBytes(saltValue);

 

            System.Security.Cryptography.AesManaged aes = new System.Security.Cryptography.AesManaged();

 

            System.Security.Cryptography.Rfc2898DeriveBytes rfc = new System.Security.Cryptography.Rfc2898DeriveBytes(pwdValue, salt);

 

            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);

 

            // 用当前的 Key 属性和初始化向量 IV 创建对称解密器对象

            System.Security.Cryptography.ICryptoTransform decryptTransform = aes.CreateDecryptor();

 

            // 解密后的输出流

            System.IO.MemoryStream decryptStream = new System.IO.MemoryStream();

 

            // 将解密后的目标流(decryptStream)与解密转换(decryptTransform)相连接

            System.Security.Cryptography.CryptoStream decryptor = new System.Security.Cryptography.CryptoStream(

                decryptStream, decryptTransform, System.Security.Cryptography.CryptoStreamMode.Write);

 

            // 将一个字节序列写入当前 CryptoStream (完成解密的过程)

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

            decryptor.Close();

 

            // 将解密后所得到的流转换为字符串

            byte[] decryptBytes = decryptStream.ToArray();

            string decryptedString = UTF8Encoding.UTF8.GetString(decryptBytes, 0, decryptBytes.Length);

 

            return decryptedString;

        }

 

        #endregion

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值