我正在尝试将以下 JAVA 代码复制到 C# 中,但我认为我做得不对 o_o
(代码取自ftp://ftp.arlut.utexas.edu/pub/java_hashes/Sha512Crypt.java)
JAVA 变量:
ctx, alt_ctx = 消息摘要
key = String(要哈希的密码)
salt = String(要添加到哈希中的盐)
/* ---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 = 哈希算法(SHA512托管)
key和salt与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);
关于c# - 将 java sha512crypt 转换为 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837652/