Avatar billede davidfossil Nybegynder
04. december 2004 - 16:44 Der er 18 kommentarer og
1 løsning

Meget simpel encryption

Hvordan kan jeg (ved hjælp af System.Security.Cryptography eller en gratis component) kryptere en string? Det behøves ikke være super sikkert, bare teksten bliver skrevet om til noget andet hvor det ikke lige er muligt at se en sammenhæng. Her kommer mit eneste krav: outputtet skal være aplhanumeriske tegn, idet systemet skal udskrive en slags "aktiveringskoder" på den måde.
Avatar billede arne_v Ekspert
04. december 2004 - 16:46 #1
Brug en standard kryptering og konverter til Base64 !
Avatar billede arne_v Ekspert
04. december 2004 - 16:53 #2
Eksempel:

        Encoding utf = new UTF8Encoding();
        DES des = new DESCryptoServiceProvider();
        byte[] key = utf.GetBytes("hemmelig");
        byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };
        ICryptoTransform encrypt = des.CreateEncryptor(key, iv);
        string plain = "Dette er en lille test";
        byte[] cipher = encrypt.TransformFinalBlock(utf.GetBytes(plain), 0, utf.GetByteCount(plain1));
        string cipherb64 = Convert.ToBase64String(cipher);
Avatar billede davidfossil Nybegynder
04. december 2004 - 16:58 #3
hvordan får du så lavet din Base64 string om til noget der kan decrypteres?
Avatar billede arne_v Ekspert
04. december 2004 - 17:00 #4
Encoding utf = new UTF8Encoding();
        DES des = new DESCryptoServiceProvider();
        byte[] key = utf.GetBytes("hemmelig");
        byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };
        ICryptoTransform decrypt = des.CreateDecryptor(key, iv);
        byte[] cipher = Convert.FromBase64String(cipherb64):
        String plain = utf.GetString(decrypt.TransformFinalBlock(cipher, 0, cipher.Length));
Avatar billede arne_v Ekspert
04. december 2004 - 17:01 #5
Det er copy pastet fra forskellige filer.

Jeg kan godt lige prøve at lave et komplet eksempel.
Avatar billede arne_v Ekspert
04. december 2004 - 17:04 #6
using System;
using System.Text;
using System.Security.Cryptography;

namespace E5
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Encoding utf = new UTF8Encoding();
            DES des = new DESCryptoServiceProvider();
            byte[] key = utf.GetBytes("hemmelig");
            byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8 };
            ICryptoTransform encrypt = des.CreateEncryptor(key, iv);
            string plain = "Dette er en lille test";
            Console.WriteLine(plain);
            byte[] cipher = encrypt.TransformFinalBlock(utf.GetBytes(plain), 0, utf.GetByteCount(plain));
            string cipherb64 = Convert.ToBase64String(cipher);
            Console.WriteLine(cipherb64);
            ICryptoTransform decrypt = des.CreateDecryptor(key, iv);
            byte[] cipher2 = Convert.FromBase64String(cipherb64);
            string plain2 = utf.GetString(decrypt.TransformFinalBlock(cipher2, 0, cipher.Length));
            Console.WriteLine(plain2);
        }
    }
}
Avatar billede arne_v Ekspert
04. december 2004 - 17:04 #7
Output:

Dette er en lille test
F9t3Kl3xhKyAz4kQuv8L29to08cEpuRA
Dette er en lille test
Avatar billede davidfossil Nybegynder
04. december 2004 - 17:19 #8
der ser ud til at der godt kan dukke en slash eller et plus tegn op i den encodede streng, men det er til at leve med for mig :)

smid et svar - tak for hurtig hjælp!
Avatar billede arne_v Ekspert
04. december 2004 - 17:22 #9
Jeg læste dit "alfanumerisk" som "printbar".

Tegnene er: A-Z a-z 0-9 + /
Avatar billede arne_v Ekspert
04. december 2004 - 17:23 #10
og et svar
Avatar billede davidfossil Nybegynder
13. december 2004 - 09:36 #11
satser lige på at du stadig "lytter" her ...

har du et hurtigt bud på hvordan jeg kan slippe helt af med de ikke alphanumeriske tegn?

mange tak :)
Avatar billede arne_v Ekspert
13. december 2004 - 09:56 #12
Så skal du nok konvertere til og fra hex.
Avatar billede davidfossil Nybegynder
13. december 2004 - 10:30 #13
Ahh, smart.

Det vil bare give mig tal og bogstaver fra A til F, right?
Avatar billede arne_v Ekspert
13. december 2004 - 10:33 #14
Ja

Tilgengæld fordobler det størrelsen hvor base64 kun ligger 33% til.
Avatar billede davidfossil Nybegynder
13. december 2004 - 10:35 #15
ja, det er klart - tak for hjælpen :o)
Avatar billede davidfossil Nybegynder
17. december 2004 - 16:58 #16
kan du give et hint til hvordan jeg kommer fra string til hex?
selv kan jeg kun se hvordan jeg kommer fra int til hex og retur...

tak :)
Avatar billede arne_v Ekspert
17. december 2004 - 17:09 #17
Man kan ihvertfald tage dem enkeltvist med:

string sv = "7B";
int iv;
iv = int.Parse(sv, NumberStyles.HexNumber);
Avatar billede arne_v Ekspert
17. december 2004 - 17:09 #18
men måske findes der noget som kan lave string->byte[] med et kald
Avatar billede arne_v Ekspert
17. december 2004 - 18:36 #19
Vist ikke.

Men andre har haft samme problem:

http://www.codeproject.com/csharp/hexencoding.asp
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