08. september 2006 - 20:18
Der er
12 kommentarer og 1 løsning
kryptering og dekryptering af string?
Hvordan krypterer jeg noget i C#, og hvordan dekrypterer jeg det igen? Det drejer som en en helt almindelig string. Har søgt lidt på det, men kan ikke finde noget.
Annonceindlæg fra Barco
Slettet bruger
08. september 2006 - 21:09
#1
Hejsa. Prøv med noget i retning af: Encrypt(string clearText, string Password); Og Decrypt(string clearText, string Password);
Slettet bruger
08. september 2006 - 21:17
#2
Hejsa.
Jeg var nok en smule for hurtig her :-)
Tjek evt.
http://www.codeproject.com/dotnet/DotNetCrypto.asp Jeg har selv arbejdet en smule med det, men i en anden sammenhæng, hvor jeg krypterer en streng i en cookie via formsauthentication:
string encryptedTicket = null;
FormsAuthenticationTicket cookieTicket = new FormsAuthenticationTicket(1, userId.ToString(), timeLogin, timeExpire, false, role);
encryptedTicket = FormsAuthentication.Encrypt(cookieTicket);
08. september 2006 - 21:41
#3
et simpelt AES eksempel fra lageret: using System; using System.Text; using System.Security.Cryptography; class MainClass { public static void Main(string[] args) { Encoding utf = new UTF8Encoding(); Rijndael aes = new RijndaelManaged(); byte[] key = utf.GetBytes("hemmeligabcdefgh12345678"); byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; ICryptoTransform encrypt = aes.CreateEncryptor(key, iv); String plain1 = "Dette er en lille test"; byte[] cipher = encrypt.TransformFinalBlock(utf.GetBytes(plain1), 0, utf.GetByteCount(plain1)); for(int i = 0; i < cipher.Length; i++) { Console.WriteLine(cipher[i]); } ICryptoTransform decrypt = aes.CreateDecryptor(key, iv); String plain2 = utf.GetString(decrypt.TransformFinalBlock(cipher, 0, cipher.Length)); Console.WriteLine(plain2); } }
08. september 2006 - 21:42
#4
I nogle tilfælde vil du hexificere eller base64 encode byte arrayet for at få en string ud af det
08. september 2006 - 22:37
#5
arne_v jeg skal bruge en sammenhængende ting... Altså den krypterede del skal være sammenhængende.
08. september 2006 - 22:46
#6
arne_v jeg fandt et script fra et andet spørgsmål som du også har været med i: 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); } Det er mere det jeg vil have men hvordan ændre man på key og iv, og hvad betyder det? Jeg får bare en exception hvis jeg begynder at ændre i dem.
09. september 2006 - 00:22
#7
Sådan nu har jeg lavet dit første eksempel lidt om, og nu virker det som jeg vil have det til, smid et svar.. Kode: public void krypt(string action, string what_to_en_decrypt) { Encoding utf = new UTF8Encoding(); Rijndael aes = new RijndaelManaged(); byte[] key = utf.GetBytes("abcdefghijklmnop"); byte[] iv = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; ICryptoTransform encrypt = aes.CreateEncryptor(key, iv); if (action == "encrypt") { byte[] cipher = encrypt.TransformFinalBlock(utf.GetBytes(what_to_en_decrypt), 0, utf.GetByteCount(what_to_en_decrypt)); cipherb64 = Convert.ToBase64String(cipher); ICryptoTransform decrypt = aes.CreateDecryptor(key, iv); plain_decrypt = utf.GetString(decrypt.TransformFinalBlock(cipher, 0, cipher.Length)); } else if (action == "decrypt") { ICryptoTransform decrypt = aes.CreateDecryptor(key, iv); byte[] cipher = Convert.FromBase64String(what_to_en_decrypt); plain_decrypt = utf.GetString(decrypt.TransformFinalBlock(cipher, 0, cipher.Length)); } }
09. september 2006 - 01:37
#8
ok
09. september 2006 - 01:45
#9
Her er dine point.. ;)
09. september 2006 - 01:47
#10
thomasso det er muligt at dit også ville have virket, men har ikke testet det da arne_v's var mere lige til at sætte ind.. Hvis du synes du burde have haft nogle point, så sig til og vi ordner det ;)
Slettet bruger
09. september 2006 - 14:23
#11
Helt i orden! Det er løsningerne der tæller, ikke point :-)
09. september 2006 - 15:48
#12
Ja jeg er også enig, men mange her på eksperten er ikke, og dem må man jo tage højde for ;)
Slettet bruger
10. september 2006 - 21:13
#13
KLart klart! Jeg har det nu sådan, at jeg som regel får den hjælp jeg skal bruge og så vil jeg meget gerne hjælpe andre hvis det er muligt. Men nu har jeg så bare desværre ikke den store kompetence indenfor kryptering. Men fedt at du fik løst dit problem :-)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.