簡單的加密設計

來源:互聯網
上載者:User

一般我們加密碼要用MD5,DES等等一些演算法,在.NET中整合了大量的加秘類

不過對於簡單的加密處理是否有必要那麼複雜?

對於要加密保護不強的東西,完全定義一種自己的設計也不錯,就是用一個密鑰+隨即碼轉化成特殊字元

但隨機碼和鑰怎樣組合就是重要的了:

下面是個簡單例子:

 public class EncryptString
    ...{
        public static string key = "FireBird";//密鑰

        /**//// <summary>
        /// 將明文加密碼
        /// </summary>
        /// <param name="uid">使用者名稱</param>
        /// <param name="key">加密明文</param>
        /// <returns>6位隨機數+key+UID+5位隨機數字</returns>
        public static string Encrypt(string uid) / /這裡用了靜態方法
        ...{
            int number;
            char code;
            string checkCode = String.Empty;
            Random random = new Random();

            for (int i = 0; i < 6; i++)
            ...{
                number = random.Next();

                if (number % 2 == 0)
                    code = (char)('0' + (char)(number % 10));
                else
                    code = (char)('A' + (char)(number % 26));

                checkCode += code.ToString();
            }
            string encryptText = checkCode + "|" + key + "|" + uid + "|" + random.Next(100000);

            return encryptText;
        }
    }

上面的代碼產生要加密的明文,其主要是給UID加密,KEY是鑰匙

 下面進行加密碼

public bool EncryptConvert(string uid)
    ...{
        string encryptText = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(EncryptString.Encrypt(uid))).Replace("+", "%2B");//加密(調用靜態明文產生方法)
        if (Decrypt(encryptText, uid))//調用解密方法
        ...{
            Session.Add(SystemConst.KEY_CACHE_STUDENT, uid);
            return true;
            
        }
        else
        ...{
            return false;
        }
    }

 下面定義解密:

  public bool Decrypt(string encryptText,string uid)
    ...{
        string decryptText = System.Text.Encoding.Default.GetString(Convert.FromBase64String(encryptText.ToString().Replace("%2B", "+")));
        string[] decrypt = decryptText.Split('|');
        if (decrypt[1].ToString().Trim() == EncryptString.key.ToString().Trim())
        ...{
            return true;
        }
        else
        ...{
            return false;
        }
    }

以上代碼實現了整個加密,解密過程,在加密方法中EncryptConvert()同時調用了下面的解密方法,讀這可將他們分離

實現獨立的兩個方法,並且在真正用到時建議把密鑰用位元組數組的方式分散到隨機數中,比如:

隨機器數+1位密鑰匙+隨即數+1位密鑰+隨機數......這樣在變換時一般是察覺不到變化的,除非有人刻意去攻擊你

你還可以把密鑰中的某個定意成一定規律遞增或減少

這樣就實現的簡單的加密碼,我主要是用於一次性地址轉向:)

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.