Avatar billede sevencomplex Nybegynder
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 ;)
Avatar billede arne_v Ekspert
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));
    }
Avatar billede sevencomplex Nybegynder
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.
Avatar billede arne_v Ekspert
03. september 2007 - 22:32 #3
Hvor har du det som skal krypteres og hvor skal det hen ?
Avatar billede sevencomplex Nybegynder
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 ;)
Avatar billede arne_v Ekspert
03. september 2007 - 23:15 #5
string datasomskalgemmesidb = Encrypt(textBox1.Text, "superhemmeligtkodeord");

og

label1.Text = Decrypt(datasomerhentetfradb, "superhemmeligtkodeord");
Avatar billede sevencomplex Nybegynder
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...
Avatar billede sevencomplex Nybegynder
03. september 2007 - 23:46 #7
Eller måske en referance der lige skal laves fQrst.
Avatar billede arne_v Ekspert
03. september 2007 - 23:53 #8
De skal indenfor din code behind klasse.
Avatar billede arne_v Ekspert
03. september 2007 - 23:54 #9
Og du skal have fat i namespace System.Security.Cryptography !
Avatar billede sevencomplex Nybegynder
03. september 2007 - 23:58 #10
ja, ok virker nu til den fQrste.

yup, thought that til den anden.

men stadig en lille fejl.
Avatar billede arne_v Ekspert
03. september 2007 - 23:59 #11
hvilken fejl ?
Avatar billede sevencomplex Nybegynder
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 };
Avatar billede sevencomplex Nybegynder
04. september 2007 - 07:49 #13
arh, manglede using System.Text;
Avatar billede sevencomplex Nybegynder
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.)
Avatar billede arne_v Ekspert
04. september 2007 - 15:07 #15
aes.KeySize indeholder styrken
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester