簡體   English   中英

符合特定Checksum C#的AES 256位密鑰生成

[英]AES 256-Bit key generation to comply with specific Checksum C#

我得到了這個驗證碼,以證明AES密鑰是否符合要求:

類Cypher.cs

public bool ValidateCheckSumAESKey(string strAESKey)
    {

        string base64AESKey = strAESKey;
        const int N = 3;
        const string valSumCalc = "qx6p";


        SHA256Managed h = new SHA256Managed();
        byte[] base64AESKeyBytes = System.Text.Encoding.ASCII.GetBytes(base64AESKey);
        byte[] sha256hash = h.ComputeHash(base64AESKeyBytes);

        byte[] sha256hashNbytes = new byte[N];
        Array.Copy(sha256hash, 0, sha256hashNbytes, 0, sha256hashNbytes.Length);

        string base64sha256hashNbytes = Convert.ToBase64String(sha256hashNbytes);

        string result = base64sha256hashNbytes.Replace("=", "");


        if (0 == string.Compare(result, valSumCalc))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

因此,給出“cWhay3H4asTvRzXzXGZQ3KyBEu9BZaIxl8J + L4Bhr5A =”的示例鍵傳遞校驗和。

我正在嘗試使用生成AES密鑰

   public string Encrypt()
    {
        AesManaged aes = new AesManaged();
        aes.KeySize = 256;
        return Convert.ToBase64String(aes.Key);
    }

但即使我在大班

 Cypher cf = new Cypher();

 bool boolValid = false;
 while (!boolValid)
 {
    string strKey = cf.Encrypt();
    boolValid = cf.ValidateCheckSumAESKey(strKey);
 }

...它可以運行幾個小時而無需找到一個有效的密鑰。 我怎樣才能縮短循環以更快地找到符合要求的密鑰?

先感謝您。

4 base64字符代表24位信息,為您提供16777216種不同的組合。

測量Encrypt()的速度應該可以很好地指示平均嘗試1600萬到1700萬個案例需要多長時間。

考慮在每次調用時生成一個新的隨機密鑰。隨機數據通常可能是系統上有限的資源,可能會減慢您的速度。 特別是嘗試測量new AesManaged();的速度new AesManaged();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM