簡體   English   中英

將Java sha512crypt轉換為C#

[英]converting java sha512crypt to c#

我正在嘗試將以下JAVA代碼復制到C#中,但我認為我做的不正確o_o

(代碼取自ftp://ftp.arlut.utexas.edu/pub/java_hashes/Sha512Crypt.java

JAVA變量:

ctx,alt_ctx = MessageDigest

key =字符串(哈希密碼)

salt =字符串(添加到哈希中的鹽)

        /*                  ---JAVA---                    //
        ////////////////////////////////////////////////////
        ctx.reset();

        ctx.update(key, 0, key.length);
        ctx.update(salt, 0, salt.length);

        alt_ctx.reset();
        alt_ctx.update(key, 0, key.length);
        alt_ctx.update(salt, 0, salt.length);
        alt_ctx.update(key, 0, key.length);

        alt_result = alt_ctx.Digest();
        //////////////////////////////////////////////////*/

C#變量:

ctx,alt_ctx = HashAlgorithm(SHA512Managed)

鍵和鹽與JAVA中的相同...

 //                       --- C# EQUIV ? ---                    //
        int TESTINGINT;
        ctx = null;
        ctx = new SHA512Managed();
        ctx.TransformBlock(key, 0, key.Length, key, 0);
        ctx.TransformBlock(salt, 0, salt.Length, salt, 0);

        alt_ctx = null;
        alt_ctx = new SHA512Managed();

        alt_ctx.TransformBlock(key, 0, key.Length, key, 0);
        alt_ctx.TransformBlock(salt, 0, salt.Length, salt, 0);
        alt_ctx.TransformBlock(key, 0, key.Length, key, 0);

        alt_result = alt_ctx.TransformFinalBlock(key, 0, key.Length); //most likely wrong here

        //?????????????????????????????????????????????????????????//

就像我說的,很確定這是錯誤的...想知道是否有人知道確切的翻譯。

我也一直在尋找http://www.obviex.com/samples/hash.aspx尋求幫助。 但是,這不會給我相同的輸出,也沒有任何#個回合可以做。

給定單詞“ beta”,我試圖最終復制以下內容(一行)

$ 6 $ rounds = 60000 $ ZIFtW / dNUcD / k $ O57sTkYwuRpQcgpnIdKLShfCVR7.vGzfMhvvWn7Mg8trGJsWADChhs6S5ONybnSBWHEHIQKw66a4i / YrA4y / y1

謝謝你的幫助

因此,在進行了徹底的測試之后,我將C#固定為以下代碼,這似乎是等效的...

ctx = new SHA512Managed();

byte[] digestA = new byte[key.Length + salt.Length];

ctx.TransformBlock(key, 0, key.Length, digestA, 0);
ctx.TransformBlock(salt, 0, salt.Length, digestA, key.Length);

byte[] digestB = new byte[key.Length * 2 + salt.Length];

ctx.TransformBlock(key, 0, key.Length, digestB, 0);
ctx.TransformBlock(salt, 0, salt.Length, digestB, key.Length);
ctx.TransformBlock(key, 0, key.Length, digestB, key.Length + salt.Length);

alt_ctx = new SHA512Managed();

alt_result = alt_ctx.ComputeHash(digestB);  

暫無
暫無

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

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