• c#加密 可逆与不可逆MD5 加密


    1、方法一 (不可逆加密) srxljl

       public string EncryptPassword(string PasswordString,string PasswordFormat ) 
       { 
         string   encryptPassword = null;
         if (PasswordFormat="SHA1"){ 
               encryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"SHA1"); 
             } 
             elseif (PasswordFormat="MD5") 
         {

          encryptPassword=FormsAuthortication.HashPasswordForStoringInConfigFile(PasswordString ,"MD5"); 
             }
        return encryptPassword ;
    }

     

    2、方法二 (可逆加密)srxljl

     

        public interface IBindesh
    {
        string encode(string str);
        string decode(string str);
    }

    public class EncryptionDecryption : IBindesh
        {
            public string encode(string str)
            {
                string htext = ""; 

                for ( int i = 0; i < str.Length; i++)
                {
                          htext = htext + (char) (str[i] + 10 - 1 * 2);
                      }
                return htext;
                  }

            public string decode(string str)
            {
                string dtext = ""; 

                for ( int i=0; i < str.Length; i++)
                {
                          dtext = dtext + (char) (str[i] - 10 + 1*2);
                      }
                return dtext;
                  }

     

    3、方法三 (可逆加密)srxljl

     

            
            const string KEY_64 = "VavicApp";//注意了,是8个字符,64位

            const string IV_64 = "VavicApp"; 
    public string Encode(string data)
            {
                byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
                byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

                      DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
                int i = cryptoProvider.KeySize;
                      MemoryStream ms = new MemoryStream();
                      CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);

                      StreamWriter sw = new StreamWriter(cst);
                      sw.Write(data);
                      sw.Flush();
                      cst.FlushFinalBlock();
                      sw.Flush();
                return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);

                  }

            public string Decode(string data)
            {
                byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(KEY_64);
                byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(IV_64);

                byte[] byEnc;
                try
                {
                          byEnc = Convert.FromBase64String(data);
                      }
                catch
                {
                    return null;
                      }

                      DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
                      MemoryStream ms = new MemoryStream(byEnc);
                      CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
                      StreamReader sr = new StreamReader(cst);
                return sr.ReadToEnd();
                  }

     

    4,md5(32位加密) srxljl

    public string GetMD5(string s, string _input_charset)
        {

            /// <summary>
            /// 与ASP兼容的MD5加密算法
            /// </summary>

                 MD5 md5 = new MD5CryptoServiceProvider();
            byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(s));
                 StringBuilder sb = new StringBuilder(32);
            for (int i = 0; i < t.Length; i++)
            {
                     sb.Append(t[i].ToString("x").PadLeft(2, '0'));
                 }
            return sb.ToString();
             }

            (16位加密)srxljl

     

    public static string GetMd5Str(string ConvertString)
        {
                 MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            string t2 =BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);
                 t2 = t2.Replace("-", "");
            return t2;
             }

     

    5、加解文本文件srxljl

     

        //加密文件
        private static void EncryptData(String inName, String outName, byte[] desKey, byte[] desIV)
        {
            //Create the file streams to handle the input and output files.
                 FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
                 FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
                 fout.SetLength(0);

            //Create variables to help with read and write.
            byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
            long rdlen = 0;              //This is the total number of bytes written.
            long totlen = fin.Length;    //This is the total length of the input file.
            int len;                     //This is the number of bytes to be written at a time.

                 DES des = new DESCryptoServiceProvider();
                 CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(desKey, desIV), CryptoStreamMode.Write);

            //Read from the input file, then encrypt and write to the output file.
            while (rdlen < totlen)
            {
                     len = fin.Read(bin, 0, 100);
                     encStream.Write(bin, 0, len);
                     rdlen = rdlen + len;
                 }

                 encStream.Close();
                 fout.Close();
                 fin.Close();
             }

        //解密文件
        private static void DecryptData(String inName, String outName, byte[] desKey, byte[] desIV)
        {
            //Create the file streams to handle the input and output files.
                 FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
                 FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
                 fout.SetLength(0);

            //Create variables to help with read and write.
            byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
            long rdlen = 0;              //This is the total number of bytes written.
            long totlen = fin.Length;    //This is the total length of the input file.
            int len;                     //This is the number of bytes to be written at a time.

                 DES des = new DESCryptoServiceProvider();
                 CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(desKey, desIV), CryptoStreamMode.Write);

            //Read from the input file, then encrypt and write to the output file.
            while (rdlen < totlen)
            {
                     len = fin.Read(bin, 0, 100);
                     encStream.Write(bin, 0, len);
                     rdlen = rdlen + len;
                 }

                 encStream.Close();
                 fout.Close();
                 fin.Close();
             }

  • 相关阅读:
    JS 数组去重复值
    git 上传项目 到github
    IntelliJ IDEA 创建maven 项目 并且,将springMVC 与Mybatis 整合
    easyui datagrid 动态添加columns属性
    codeMirror的简单使用,js比较文本差异(标注出增删改)
    sql注入
    Web For Pentester靶场
    一些数据库
    nginx的使用场景
    dockerfile
  • 原文地址:https://www.cnblogs.com/gc2013/p/3848488.html
Copyright © 2020-2023  润新知