将Java sha512crypt转换为C# - 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);  

将Java 7迁移到循环到Java 8的列表中 - java

我正在将Java7代码迁移到Java8。与下面在Java 8中发布的代码等效(最好是一个线性)List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); List<Integer> output = new ArrayList<>(list.size()); for(Integer…

为什么dict.get(key)起作用但dict [key]不起作用? - python

我正在尝试根据字符串中存在的1将某些数字的二进制字符串分组在一起。这不起作用:s = "0 1 3 7 8 9 11 15" numbers = map(int, s.split()) binaries = [bin(x)[2:].rjust(4, '0') for x in numbers] one_groups =…

无法在Codeigniter / PHPExcel中重新声明类Excel错误 - php

我想在Excel文件中导出一些数据,但出现此错误。遇到PHP错误严重性:编译错误消息:无法重新声明Excel类文件名:libraries / EXcel.php行号:9我尝试了一些方法,但没有人适合我。像1 2这是我的EXcel.php代码<?php if (!defined('BASEPATH')) exit('No d…

不幸的是,Myapp在输入登录详细信息后已停止 - java

我正在开发一个应用程序,输入登录详细信息后,该应用程序崩溃了。我认为该错误是由于数据库链接和获取的问题所致,并且尝试了一些在线发布的解决方案,但没有任何效果。我该怎么解决?06-21 13:21:04.590 1913-1913/in.co.arrow E/AndroidRuntime: FATAL EXCEPTION: main Process: in.c…

隐藏开源应用程序中使用的API密钥 - java

我目前正在开发基于第三方网络API的桌面应用程序,并且已经为其程序注册并获得了两个访问密钥作为回报。但是,如果将这些键作为字符串粘贴到源代码中,那么任何人都可以拉回存储库的内容并轻松地找到它们。到目前为止,关于如何防止这种情况的最好的想法是将它们分别编译成一个类文件,对其进行模糊处理,然后再使用它,以便至少在源代码中不使用纯文本格式。但是,我是否缺少更好,更…