Skip to content

Commit 09850d3

Browse files
committed
Revert "Made compatible with other code"
This reverts commit bcb0a97.
1 parent bcb0a97 commit 09850d3

File tree

1 file changed

+76
-16
lines changed

1 file changed

+76
-16
lines changed

utils/Hasher.cs

Lines changed: 76 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,85 @@
33

44
namespace PBKDF2Hasher
55
{
6-
private static byte[] GenerateSalt()
6+
public class Hasher
77
{
8-
var csprng = new RNGCryptoServiceProvider();
9-
var salt = new byte[32];
10-
csprng.GetBytes(salt);
11-
return salt;
12-
}
138

14-
public static (byte[] hash, byte[] salt) pbkdf2hash(string password)
15-
{
9+
public static byte[] GenerateSalt()
10+
{
11+
var csprng = new RNGCryptoServiceProvider();
12+
var salt = new byte[32];
13+
csprng.GetBytes(salt);
14+
Console.WriteLine("Salt generated - {0}", Convert.ToBase64String(salt));
15+
return salt;
16+
}
1617

17-
string password = "passwd";
18-
byte[] salt = GenerateSalt();//warning shouldnt be random salts - change when you try and decrypt no?
19-
int iterations = 100000;
20-
byte[] hashValue;
21-
using (var pbkdf2 = new Rfc2898DeriveBytes(password, salt, iterations))
18+
public static int GetIterations()
2219
{
23-
hashValue = pbkdf2.GetBytes(32);
20+
Console.WriteLine("Please enter a number of iterations. If no input is given the program will default to 1 million: ");
21+
22+
int iterations;
23+
24+
string input = Console.ReadLine();
25+
if (input == "")
26+
{
27+
Console.WriteLine("Using default iterations");
28+
return 1000000;
29+
}
30+
try
31+
{
32+
iterations = Int32.Parse(input);
33+
}
34+
catch (FormatException)
35+
{
36+
Console.WriteLine("Please enter a valid number");
37+
return GetIterations();
38+
}
39+
return iterations;
40+
}
41+
42+
public static int Main(string[] args)
43+
{
44+
if (args.Length > 3 || args.Length == 0)
45+
{
46+
Console.WriteLine("Please give a word to be hashed, and optionally a salt and an iteration number");
47+
return 1;
48+
}
49+
50+
Byte[] salt;
51+
int iterations;
52+
53+
if (args.Length > 1)
54+
{
55+
salt = Convert.FromBase64String(args[1]);
56+
}
57+
else
58+
{
59+
salt = GenerateSalt();
60+
}
61+
62+
if (args.Length == 3)
63+
{
64+
iterations = Convert.ToInt32(args[3]);
65+
}
66+
else
67+
{
68+
iterations = GetIterations();
69+
70+
}
71+
72+
byte[] hashValue;
73+
74+
//Generate hash using salt
75+
using (var pbkdf2 = new Rfc2898DeriveBytes(args[0], salt, iterations))
76+
{
77+
Console.WriteLine("Hashing...");
78+
hashValue = pbkdf2.GetBytes(64);
79+
}
80+
81+
Console.WriteLine("\nHash: " + Convert.ToBase64String(hashValue) + "\n" + "Salt: " + Convert.ToBase64String(salt));
82+
83+
84+
return 0;
2485
}
25-
return (hashValue,salt);
2686
}
27-
}
87+
}

0 commit comments

Comments
 (0)