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.
Annonceindlæg tema
04. december 2004 - 16:46
#1
Brug en standard kryptering og konverter til Base64 !
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);
04. december 2004 - 16:58
#3
hvordan får du så lavet din Base64 string om til noget der kan decrypteres?
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));
04. december 2004 - 17:01
#5
Det er copy pastet fra forskellige filer. Jeg kan godt lige prøve at lave et komplet eksempel.
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); } } }
04. december 2004 - 17:04
#7
Output: Dette er en lille test F9t3Kl3xhKyAz4kQuv8L29to08cEpuRA Dette er en lille test
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!
04. december 2004 - 17:22
#9
Jeg læste dit "alfanumerisk" som "printbar". Tegnene er: A-Z a-z 0-9 + /
04. december 2004 - 17:23
#10
og et svar
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 :)
13. december 2004 - 09:56
#12
Så skal du nok konvertere til og fra hex.
13. december 2004 - 10:30
#13
Ahh, smart. Det vil bare give mig tal og bogstaver fra A til F, right?
13. december 2004 - 10:33
#14
Ja Tilgengæld fordobler det størrelsen hvor base64 kun ligger 33% til.
13. december 2004 - 10:35
#15
ja, det er klart - tak for hjælpen :o)
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 :)
17. december 2004 - 17:09
#17
Man kan ihvertfald tage dem enkeltvist med: string sv = "7B"; int iv; iv = int.Parse(sv, NumberStyles.HexNumber);
17. december 2004 - 17:09
#18
men måske findes der noget som kan lave string->byte[] med et kald
17. december 2004 - 18:36
#19
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.