03. september 2007 - 20:53
Der er
15 kommentarer
2 vejs kryptering med asp.net (c#)
Hey eksperter, jeg er rimelig ny til asp.net og c# og vil rigtigt gerne hvis i kunne give et eksempel på en kryptering (256bits). Det kryptede data skal bruges til storage i en MySQL/MSSQL database. Skal bare vide hvordan jeg nemt krypterer og dekrypterer mine data, og husk nu en begynder venlig forklaring ;)
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
03. september 2007 - 21:25
#1
Kode snippet: private static Encoding utf = new UTF8Encoding(); private static Rijndael aes = new RijndaelManaged(); private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; public static string Encrypt(string plain, string key) { ICryptoTransform encrypt = aes.CreateEncryptor(utf.GetBytes(key), iv); return Convert.ToBase64String(encrypt.TransformFinalBlock(utf.GetBytes(plain), 0, utf.GetByteCount(plain))); } public static string Decrypt(string cipher, string key) { ICryptoTransform decrypt = aes.CreateDecryptor(utf.GetBytes(key), iv); byte[] b = Convert.FromBase64String(cipher); return utf.GetString(decrypt.TransformFinalBlock(b, 0, b.Length)); }
03. september 2007 - 22:19
#2
Som sagt så er jeg pænt ny til det her så forstår slet ikke hvordan man får det der til at virke.
03. september 2007 - 22:32
#3
Hvor har du det som skal krypteres og hvor skal det hen ?
03. september 2007 - 22:59
#4
Atm har jeg det på test.aspx i en textbox og det skal gerne i en sql param til at blive indsat i en sql db. og så skal det self den anden vej fra min sql og ud i fx. Et label på en anden test side. Man må jo prQve sig frem og spQrge om hjaelp ;)
03. september 2007 - 23:15
#5
string datasomskalgemmesidb = Encrypt(textBox1.Text, "superhemmeligtkodeord"); og label1.Text = Decrypt(datasomerhentetfradb, "superhemmeligtkodeord");
03. september 2007 - 23:41
#6
Ok det ligner da noget der kunne virke. skal koden private static Encoding utf = new UTF8Encoding(); private static Rijndael aes = new RijndaelManaged(); private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; public static string Encrypt(string plain, string key) { ICryptoTransform encrypt = aes.CreateEncryptor(utf.GetBytes(key), iv); return Convert.ToBase64String(encrypt.TransformFinalBlock(utf.GetBytes(plain), 0, utf.GetByteCount(plain))); } public static string Decrypt(string cipher, string key) { ICryptoTransform decrypt = aes.CreateDecryptor(utf.GetBytes(key), iv); byte[] b = Convert.FromBase64String(cipher); return utf.GetString(decrypt.TransformFinalBlock(b, 0, b.Length)); } bare indenfor et namespace der hedder Encoding eller? så er vi helt nede hvor det naesten er pinligt at spQrge...
03. september 2007 - 23:46
#7
Eller måske en referance der lige skal laves fQrst.
03. september 2007 - 23:53
#8
De skal indenfor din code behind klasse.
03. september 2007 - 23:54
#9
Og du skal have fat i namespace System.Security.Cryptography !
03. september 2007 - 23:58
#10
ja, ok virker nu til den fQrste. yup, thought that til den anden. men stadig en lille fejl.
03. september 2007 - 23:59
#11
hvilken fejl ?
04. september 2007 - 07:31
#12
Argh nettet gik ned. using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Security.Cryptography; public partial class _Default : System.Web.UI.Page { private static Encoding utf = new UTF8Encoding(); private static Rijndael aes = new RijndaelManaged(); private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; public static string Encrypt(string plain, string key) { ICryptoTransform encrypt = aes.CreateEncryptor(utf.GetBytes(key), iv); return Convert.ToBase64String(encrypt.TransformFinalBlock(utf.GetBytes(plain), 0, utf.GetByteCount(plain))); } public static string Decrypt(string cipher, string key) { ICryptoTransform decrypt = aes.CreateDecryptor(utf.GetBytes(key), iv); byte[] b = Convert.FromBase64String(cipher); return utf.GetString(decrypt.TransformFinalBlock(b, 0, b.Length)); } protected void Page_Load(object sender, EventArgs e) { string test = "sygt"; string Krypteret = Encrypt(test, "superhemmeligtkodeord"); Label lbl = new Label(); lbl.Text = Krypteret; label1.Text = Decrypt(test, "superhemmeligtkodeord"); } } Vil væde med at det ikke skal ligge der. Compiler Error Message: CS0246: The type or namespace name 'Encoding' could not be found (are you missing a using directive or an assembly reference?) Line 12: public partial class _Default : System.Web.UI.Page Line 13: { Line 14: private static Encoding utf = new UTF8Encoding(); // <--- der Line 15: private static Rijndael aes = new RijndaelManaged(); Line 16: private static byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
04. september 2007 - 07:49
#13
arh, manglede using System.Text;
04. september 2007 - 10:04
#14
Men hvor stor en kryptering er det og kan man ændre i hvor kraftig krypteringen er? (Burde give ekstra point for det her.)
04. september 2007 - 15:07
#15
aes.KeySize indeholder styrken
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.