Ich bin ein Student völlig neu in C# -Programmierung. Ich mache gerade ein Mini-Sicherheitsprojekt mit MVC. Das Projekt: Benutzern erlauben, eine CSV-Datei hochzuladen, die Konten aber Kennwort nicht Hasch und Salz enthält. (Fertig) Dann werde ich die Datei Virustotal senden und scannen, bevor Sie auf dem Server speichern (Fertig) Nach dem Speichern muss ich die Daten in die CSV-Datei und Hash-und fügen Sie das Passwort in die Datenbank. (Hilfe nötig)Wie Hash und fügen Sie Salz zum Kennwort von Csv C#
mein Controller
public ActionResult Upload(HttpPostedFileBase file)
{
if (System.IO.Path.GetExtension(file.FileName).Equals(".csv"))
{
//{0} = Y, {1} = M, {2} = D, {3} = H, {4} = min, {5} = Sec
string datetime = string.Format("{0}{1}{2}-{3}{4}{5}", DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
string fileName = string.Format("{0}_{1}.csv", file.FileName.Substring(0, (file.FileName.Length - 4)), datetime);
var fileStream = new System.IO.MemoryStream();
file.InputStream.CopyTo(fileStream);
var vtObj = new VirusTotal("%API KEY%");
vtObj.UseTLS = true;
try
{
var fileResults = vtObj.ScanFile(fileStream, fileName);
var report = vtObj.GetFileReport(fileResults.ScanId);
int resPos = report.Positives;
if (resPos == 0)
{
string savePath = Server.MapPath("~/CSV/" + fileName);
file.SaveAs(savePath);
try
{
//removing the first row
insertDB(fileName, savePath);
ViewBag.error = "Updated successfully";
return View();
}
catch (Exception ex)
{
ViewBag.error = "Unable to update DB" + ex;
return View("Index");
}
}
else
{
ViewBag.error = "Unable to upload";
return View("Index");
}
}
catch (Exception ex)
{
ViewBag.error = string.Format("Unable to upload | One min only can upload 4 times | {0} | {1}", ex, fileName);
return View("Index");
}
}
else
{
ViewBag.error = "Unable to upload";
return View("Index");
}
}
public void insertDB(string fileName, string savePath)
{
using (DB01Entities dbc = new DB01Entities())
{
string sql = string.Format(@"CREATE TABLE [dbo].[TempImport]
(
Name varchar(255),
Password VARBINARY(50)
)
bulk insert [dbo].[TempImport] from '%MyPATH%\CSV\{0}' with (ROWTERMINATOR = '\n')
INSERT INTO dbo.Employee
(
Name
Password
)
SELECT name
FROM dbo.TempImport
DROP TABLE dbo.TempImport", fileName);
dbc.Database.ExecuteSqlCommand(sql);
dbc.SaveChanges();
}
}
}
}
Mein Index
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="File" id="file" accept=".csv"/>
<input type="submit" value="Upload" />
<div class="error">@ViewBag.error</div>
}
hochladen
@{
ViewBag.Title = "Upload";
}
<div class="success">@ViewBag.error</div>
<a href="/Home/Index">Back to Index>></a>
Diese Lösung ist gut, sie verwendet 'Crypto.HashPassword', was eine sichere Methode ist, weil Es enthält Iteration des Hash. – zaph
Hallo, aber ich kann String nicht in Byte [] umwandeln bei "Password = hashedPassword" –