zoukankan      html  css  js  c++  java
  • C#加密解密方法,C#一个加密解密的方法,字符串加密算法

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

     

     

    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、方法二 (可逆加密)

     

        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、方法三 (可逆加密)

     

           
            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位加密)

    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位加密)

     

    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、加解文本文件

     

        //加密文件
        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();
        }
     

    6、

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Security.Cryptography;
    using System.IO;

    namespace Component
    {
        public class Security
        {
            public Security()
            {
           
            }

            //默认密钥向量
            private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
            /**//**//**//**//**//**//**//// <summary>
            /// DES加密字符串
            /// </summary>
            /// <param name="encryptString">待加密的字符串</param>
            /// <param name="encryptKey">加密密钥,要求为8位</param>
            /// <returns>加密成功返回加密后的字符串,失败返回源串</returns>
            public static string EncryptDES(string encryptString, string encryptKey)
            {
                try
                {
                    byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));
                    byte[] rgbIV = Keys;
                    byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
                    DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
                    MemoryStream mStream = new MemoryStream();
                    CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey,

    rgbIV), CryptoStreamMode.Write);
                    cStream.Write(inputByteArray, 0, inputByteArray.Length);
                    cStream.FlushFinalBlock();
                    return Convert.ToBase64String(mStream.ToArray());
                }
                catch
                {
                    return encryptString;
                }
            }

            /**//**//**//**//**//**//**//// <summary>
            /// DES解密字符串
            /// </summary>
            /// <param name="decryptString">待解密的字符串</param>
            /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param>
            /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
            public static string DecryptDES(string decryptString, string decryptKey)
            {
                try
                {
                    byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey);
                    byte[] rgbIV = Keys;
                    byte[] inputByteArray = Convert.FromBase64String(decryptString);
                    DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
                    MemoryStream mStream = new MemoryStream();
                    CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey,

    rgbIV), CryptoStreamMode.Write);
                    cStream.Write(inputByteArray, 0, inputByteArray.Length);
                    cStream.FlushFinalBlock();
                    return Encoding.UTF8.GetString(mStream.ToArray());
                }
                catch
                {
                    return decryptString;
                }
            }


        }
    }

    C#一个加密解密的方法

    using System;

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

    namespace EncryptionDecryption
    {
        ///
        /// 加密解密
        ///
        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;
            }
        }

        public class test
        {
            public static void aa()
            {
                EncryptionDecryption inter = new EncryptionDecryption();
                Console.WriteLine(((IBindesh)inter).encode("aa"));
                System.Console.ReadLine();
            }
        }
    }


    /*************************字符串加密算法***********************/
    public string EncryptString(string str)
      {
       char[] Base64Code=new char[]{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9','+','/','='};
       byte empty=(byte)0;
       System.Collections.ArrayList byteMessage=new  System.Collections.ArrayList(System.Text.Encoding.Default.GetBytes(str));
       System.Text.StringBuilder outmessage;
       int messageLen=byteMessage.Count;
       int page=messageLen/3;
       int use=0;
       if((use=messageLen%3)>0)
       {
        for(int i=0;i<3-use;i++)
         byteMessage.Add(empty);
        page++;
       }
       outmessage=new System.Text.StringBuilder(page*4);
       for(int i=0;i<page;i++)
       {
        byte[] instr = new byte[3];
        instr[0]=(byte)byteMessage[i*3];
        instr[1]=(byte)byteMessage[i*3+1];
        instr[2]=(byte)byteMessage[i*3+2];
        int[] outstr=new int[4];
        outstr[0]=instr[0]>>2;
     
        outstr[1]=((instr[0]&0x03)<<4)^(instr[1]>>4);
        if(!instr[1].Equals(empty))
         outstr[2]=((instr[1]&0x0f)<<2)^(instr[2]>>6);
        else
         outstr[2]=64;
        if(!instr[2].Equals(empty))
         outstr[3]=(instr[2]&0x3f);
        else
         outstr[3]=64;
        outmessage.Append(Base64Code[outstr[0]]);
        outmessage.Append(Base64Code[outstr[1]]);
        outmessage.Append(Base64Code[outstr[2]]);
        outmessage.Append(Base64Code[outstr[3]]);
       }
       return outmessage.ToString();
      }
    /**************************************************字符串解密算法**************************************************/
    public string DecryptString(string str)
                  {
       if((str.Length%4)!=0)
       {
        throw new ArgumentException("不是正确的BASE64编码,请检查。","str");
       }
       if(!System.Text.RegularExpressions.Regex.IsMatch(str,"^[A-Z0-9/+=]*$",System.Text.RegularExpressions.RegexOptions.IgnoreCase))
       {
        throw new ArgumentException("包含不正确的BASE64编码,请检查。","str");
       }
       string Base64Code="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=";
       int page=str.Length/4;
       System.Collections.ArrayList outMessage=new System.Collections.ArrayList(page*3);
       char[] message=str.ToCharArray();
       for(int i=0;i<page;i++)
       {
        byte[] instr=new byte[4];
        instr[0]=(byte)Base64Code.IndexOf(message[i*4]);
        instr[1]=(byte)Base64Code.IndexOf(message[i*4+1]);
        instr[2]=(byte)Base64Code.IndexOf(message[i*4+2]);
        instr[3]=(byte)Base64Code.IndexOf(message[i*4+3]);
        byte[] outstr=new byte[3];
        outstr[0]=(byte)((instr[0]<<2)^((instr[1]&0x30)>>4));
        if(instr[2]!=64)
        {
         outstr[1]=(byte)((instr[1]<<4)^((instr[2]&0x3c)>>2));
        }
        else
        {
         outstr[2]=0;
        }
        if(instr[3]!=64)
        {
         outstr[2]=(byte)((instr[2]<<6)^instr[3]);
        }
        else
        {
         outstr[2]=0;
        }
        outMessage.Add(outstr[0]);
        if(outstr[1]!=0)
         outMessage.Add(outstr[1]);
        if(outstr[2]!=0)
         outMessage.Add(outstr[2]);
       }
       byte[] outbyte=(byte[])outMessage.ToArray(Type.GetType("System.Byte"));
       return System.Text.Encoding.Default.GetString(outbyte);
      
      }
    文件的加密解密说明:
      
        在对文件进行加密解密时,先将文件的内容读取到一个字符串变量中,然后对字符串加密,最后再把加密后的字符串写入到文件中。详见:
    文件操作.txt。

    http://u.huoban001.com/space.php
  • 相关阅读:
    文件系统恢复!
    磁盘坏道故障!
    磁盘空间耗尽故障!
    卡方——实例(含源码 python)
    TFIDF代码实现
    最标准化步骤(大数据项目首选 Java):提取特定字段地域内容、转化为标准地域(含网络接口、demo、源码、地域数据(csv格式)) 调整指定字段,即可运行获得正确值
    运用DBN 自定义图片输入源码(python3 可直接运行,亲测可用)
    读取tfrecord 代码——可用任意照片均可2
    制作tfrecord 代码——可用任意照片均可
    MYSQL 合并多行数据(指定字段,合并主要重复,个别字段层次不齐现象)
  • 原文地址:https://www.cnblogs.com/zpq521/p/1717807.html
Copyright © 2011-2022 走看看