Aeo*_*058 9 javascript c# scrypt
我正在尝试在C#中实现warpwallet代码.我正在使用cryptsharp进行scrypt和PBKDF2实现.但是,我似乎得到的结果与真实的网站不同.
这是我的代码:
static void Main(string[] args)
{
string randomString = "mypassword";
byte[] passwordBytes = Encoding.UTF8.GetBytes(randomString);
byte[] passwordBytesScrypt = new byte[passwordBytes.Length + 1];
Array.Copy(passwordBytes, 0, passwordBytesScrypt, 0, passwordBytes.Length);
passwordBytesScrypt[passwordBytes.Length] = 0x1;
string salt = "salt@gmail.com";
byte[] saltBytes = Encoding.UTF8.GetBytes(salt);
byte[] saltBytesScrypt = new byte[saltBytes.Length + 1];
Array.Copy(saltBytes, 0, saltBytesScrypt, 0, saltBytes.Length);
saltBytesScrypt[saltBytes.Length] = 0x1;
byte[] scryptBytes = CryptSharp.Utility.SCrypt.ComputeDerivedKey(passwordBytesScrypt, saltBytes, 524288, 8, 1, null, 32);
byte[] passwordBytesPBKDF2 = passwordBytesScrypt;
passwordBytesPBKDF2[passwordBytes.Length] = 0x2;
byte[] saltBytesPBKDF2 = saltBytesScrypt;
saltBytesScrypt[saltBytes.Length] = 0x2;
byte[] pbkdf2Bytes = CryptSharp.Utility.Pbkdf2.ComputeDerivedKey(new HMACSHA256(passwordBytesPBKDF2), saltBytes, 65536, 32);
}
Run Code Online (Sandbox Code Playgroud)
根据网站(我修改了代码以登录到控制台),scrypt哈希结果应该是
4dfe98afd8f279e856abdcccce09aa54031fbd7fa39a912bb3caf5ce28648fe6
Run Code Online (Sandbox Code Playgroud)
和PBKDF2哈希结果应该是
847c053e66c093927d1f1258b52455675fe6788e537c2073927fbddddfacc0d3
Run Code Online (Sandbox Code Playgroud)
我的scrypt结果是
790BE1F92DDDF297CF7BACAA69218BE2C67680C706B2A214081A559B8E0EF43D
Run Code Online (Sandbox Code Playgroud)
和PBKDF2
CB640D1C8C13B44712EBCF341FA68F22F90D69AA5BC8427CD5ABED37FDFFE4EF
Run Code Online (Sandbox Code Playgroud)
我不明白我做错了什么.cryptsharp实现是否不正确?我错过了某个地方吗?我不太了解javascript,所以这完全有可能.任何帮助,将不胜感激.
我发现您的代码有两个问题:
看来你注入 0x1 的方式不起作用,我用不同的方式完成了它并且它起作用了:
string randomString = "mypassword";
string salt = "salt@gmail.com";
//Setup Lists to take the extra byte of the byte array to the end
var passArrList = new List<byte>();
var saltArrList = new List<byte>();
//Get the byte array of incoming passphrase
byte[] passArr = Encoding.UTF8.GetBytes(randomString);
//Add the pass byte array to the list
passArrList.AddRange(passArr);
//Append the needed 0x1 to the end of the array
passArrList.Add(1);
//Get the bytes of the salt
byte[] saltArr = Encoding.UTF8.GetBytes(salt);
//Add the salt to the list
saltArrList.AddRange(saltArr);
//Append the needed salt to the end
saltArrList.Add(1);
byte[] scryptBytes = CryptSharp.Utility.SCrypt.ComputeDerivedKey(passArrList.ToArray(), saltArrList.ToArray(), 262144, 8, 1, null, 32);
Console.WriteLine(BitConverter.ToString(scryptBytes).Replace("-", ""));
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |