-
Notifications
You must be signed in to change notification settings - Fork 0
/
Form1.cs
271 lines (216 loc) · 10.3 KB
/
Form1.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
using System;
using System.Windows.Forms;
using System.Security.Cryptography;
using System.Text;
namespace findhash
{
public partial class Form1 : Form
{
// Create labels and textboxes for the second and third columns
private Label[] labelsColumn1 = new Label[3];
private TextBox[] textboxesColumn2 = new TextBox[3];
private Label[] labelsColumn3 = new Label[3];
Size size = new(100, 30);
// Create the encrypt button
private Button encryptButton;
// Create the FlowLayoutPanel for displaying submissions
private FlowLayoutPanel submissionPanel;
private ComboBox decryptComboBox; // Dropdown list for selecting submissions to decrypt
private Label decryptedTextLabel; // Label to display decrypted text
private Aes aesAlg; // AES encryption algorithm
public Form1()
{
InitializeComponent();
// Add headings for the first, second, and third columns
Label userHeadingLabel = new Label();
userHeadingLabel.Text = "USER:";
userHeadingLabel.Location = new System.Drawing.Point(20, 0);
Label dataHeadingLabel = new Label();
dataHeadingLabel.Text = "DATA:";
dataHeadingLabel.Location = new System.Drawing.Point(200, 0);
Label sha256HeadingLabel = new Label();
sha256HeadingLabel.Text = "SHA256:";
sha256HeadingLabel.Location = new System.Drawing.Point(400, 0);
// Initialize the labels and textboxes for the second column
for (int i = 0; i < 3; i++)
{
labelsColumn1[i] = new Label();
if (i == 0)
{
labelsColumn1[i].Text = "Name";
}
if (i == 1)
{
labelsColumn1[i].Text = "Email";
}
if (i == 2)
{
labelsColumn1[i].Text = "Number";
}
labelsColumn1[i].Location = new System.Drawing.Point(20, 20 + (i * 30));
labelsColumn1[i].Width = 150; // Adjusted width
textboxesColumn2[i] = new TextBox();
textboxesColumn2[i].Location = new System.Drawing.Point(200, 20 + (i * 30)); // Adjusted location
textboxesColumn2[i].Size = new System.Drawing.Size(200, 20); // Set the width to 200 (adjust as needed)
textboxesColumn2[i].LostFocus += new EventHandler(TextBox_LostFocus);
textboxesColumn2[i].Width = 180; // Adjusted width
labelsColumn3[i] = new Label();
labelsColumn3[i].Location = new System.Drawing.Point(400, 20 + (i * 30)); // Adjusted location
labelsColumn3[i].Width = 600; // Adjusted width
}
// Initialize the encrypt button
encryptButton = new Button();
encryptButton.Text = "ENCRYPT";
encryptButton.Location = new System.Drawing.Point(20, 110);
encryptButton.Click += new EventHandler(EncryptButton_Click);
encryptButton.Size = size;
// Initialize the FlowLayoutPanel for submissions
submissionPanel = new FlowLayoutPanel();
submissionPanel.FlowDirection = FlowDirection.TopDown;
submissionPanel.Location = new System.Drawing.Point(20, 180); // Adjusted location
submissionPanel.AutoSize = true;
// Add controls to the form
Controls.Add(userHeadingLabel);
Controls.Add(dataHeadingLabel);
Controls.Add(sha256HeadingLabel);
for (int i = 0; i < 3; i++)
{
Controls.Add(labelsColumn1[i]);
Controls.Add(textboxesColumn2[i]);
Controls.Add(labelsColumn3[i]);
}
Controls.Add(encryptButton);
Controls.Add(submissionPanel);
// Initialize the decrypt button
Button decryptButton = new Button();
decryptButton.Text = "Decrypt";
decryptButton.Location = new System.Drawing.Point(200, 110);
decryptButton.Click += new EventHandler(DecryptButton_Click);
decryptButton.Size = size;
// Initialize the dropdown list for selecting submissions to decrypt
decryptComboBox = new ComboBox();
decryptComboBox.Location = new System.Drawing.Point(320, 110);
decryptComboBox.DropDownStyle = ComboBoxStyle.DropDownList; // Make it a dropdown list
decryptComboBox.Width = 60; // Adjusted width
// Initialize the label "AES256" to display next to the dropdown
Label aesLabel = new Label();
aesLabel.Text = "AES256:";
aesLabel.Location = new System.Drawing.Point(400, 110); // Adjusted location
// Initialize the label to display decrypted text
decryptedTextLabel = new Label();
decryptedTextLabel.Location = new System.Drawing.Point(500, 110); // Adjusted location
decryptedTextLabel.AutoSize = true;
// Add the "Decrypt" button and the dropdown list to the form
Controls.Add(decryptButton);
Controls.Add(decryptComboBox);
Controls.Add(aesLabel);
Controls.Add(decryptedTextLabel);
// Initialize AES encryption algorithm
aesAlg = Aes.Create();
aesAlg.GenerateKey();
aesAlg.GenerateIV();
}
private int encryptCounter = 0; // Counter for tracking submissions
private List<string> encryptedSubmissions = new List<string>(); // List to store encrypted submissions
private void EncryptButton_Click(object sender, EventArgs e)
{
// Concatenate text from the second column
string concatenatedText = "";
for (int i = 0; i < 3; i++)
{
concatenatedText += textboxesColumn2[i].Text;
}
// Increment the submission counter
encryptCounter++;
// Create a label to display the concatenated text
Label submissionLabel = new Label();
var EncryptedText = EncryptAES256Hash(concatenatedText);
submissionLabel.Text = encryptCounter + ". " + EncryptedText;
submissionLabel.AutoSize = true;
// Add the label to the FlowLayoutPanel for submissions
submissionPanel.Controls.Add(submissionLabel);
// Store the encrypted text in the list
encryptedSubmissions.Add(EncryptedText);
// Update the dropdown list with submission numbers
decryptComboBox.Items.Add(encryptCounter);
}
private void TextBox_LostFocus(object sender, EventArgs e)
{
TextBox textBox = (TextBox)sender;
// Find the index of the textbox in the second column
int index = Array.IndexOf(textboxesColumn2, textBox);
// Get the text from the second column
string inputText = textBox.Text;
// Encrypt the text using SHA-256
string hashedText = GetSHA256Hash(inputText);
// Update the label in the third column with the hashed text
labelsColumn3[index].Text = hashedText;
}
private static string GetSHA256Hash(string input)
{
using (SHA256 sha256 = SHA256.Create())
{
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
byte[] hashBytes = sha256.ComputeHash(inputBytes);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++)
{
builder.Append(hashBytes[i].ToString("x2")); // Convert to hexadecimal
}
return builder.ToString();
}
}
private string EncryptAES256Hash(string input)
{
try
{
// Convert the input text to bytes
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
// Create an encryptor
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV); // Using the IV from aesAlg
// Encrypt the bytes
byte[] encryptedBytes = encryptor.TransformFinalBlock(inputBytes, 0, inputBytes.Length);
// Convert the encrypted bytes to a Base64-encoded string
string encryptedText = Convert.ToBase64String(encryptedBytes);
return encryptedText;
}
catch (Exception ex)
{
MessageBox.Show("Encryption failed: " + ex.Message);
return "Encryption Error";
}
}
private string DecryptAES256Hash(string hashedText)
{
try
{
// Convert the hashed text to bytes
byte[] encryptedBytes = Convert.FromBase64String(hashedText);
// Create a decryptor
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV); // Using the IV from aesAlg
// Decrypt the bytes
byte[] decryptedBytes = decryptor.TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
// Convert the decrypted bytes to a string
string decryptedText = Encoding.UTF8.GetString(decryptedBytes);
return decryptedText;
}
catch (Exception ex)
{
MessageBox.Show("Decryption failed: " + ex.Message);
return "Decryption Error";
}
}
private void DecryptButton_Click(object sender, EventArgs e)
{
int selectedSubmissionIndex = decryptComboBox.SelectedIndex;
if (selectedSubmissionIndex >= 0 && selectedSubmissionIndex < encryptedSubmissions.Count)
{
// Retrieve the encrypted text based on the selected submission
string hashedText = encryptedSubmissions[selectedSubmissionIndex];
// Perform decryption here, and update the label with the decrypted text
string decryptedText = DecryptAES256Hash(hashedText);
decryptedTextLabel.Text = decryptedText; // Update the label with decrypted text
}
}
}
}