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 tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.