将java sha512crypt转换为c#
我试图将下面的JAVA代码复制到C中,但我认为我做得不对 (代码取自) JAVA变量: ctx,alt_ctx=MessageDigest key=String(散列的密码) salt=String(要添加到哈希中的盐) C#变量: ctx,alt_ctx=哈希算法(SHA512管理) 密钥和salt与JAVA中的相同将java sha512crypt转换为c#,c#,java,encryption,salt,sha512,C#,Java,Encryption,Salt,Sha512,我试图将下面的JAVA代码复制到C中,但我认为我做得不对 (代码取自) JAVA变量: ctx,alt_ctx=MessageDigest key=String(散列的密码) salt=String(要添加到哈希中的盐) C#变量: ctx,alt_ctx=哈希算法(SHA512管理) 密钥和salt与JAVA中的相同 // --- C# EQUIV ? --- // int TESTINGINT
// --- 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
//?????????????????????????????????????????????????????????//
就像我说的,很确定这是错的。。。想知道是否有人知道确切的翻译
我也一直在寻求帮助。然而,这并没有给我相同的输出,也没有任何轮要做
考虑到“beta”这个词,我试图最终复制以下内容(一行)
$6$rounds=60000$ZIFtW/dNUcD/k$O57sTkYwuRpQcgpnIdKLShfCVR7.vgzfmhvwn7mg8trgjswadchhs6s5onybnhiqkw66a4i/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代码不完整。您的变量甚至还没有声明。稍后在我的代码中,我遇到了参数异常,所以有点不对劲。@Ramhound这段代码不是我的完整程序,我已经删除了所有变量,如果您愿意,我可以发布它。。。
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);