Avatar billede forceprogrammer Nybegynder
02. august 2006 - 13:52 Der er 13 kommentarer og
1 løsning

string til bytearray

Hej.
Da jeg laver MD5 hashing vha.

System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
            return(System.Convert.ToBase64String(md5.ComputeHash(data)));

som kun kan modtage et bytearray har jeg brug for en måde at konvertere en streng til et bytearray.
Hvordan kan jeg gøre det?

Mvh. ForceProgrammer
Avatar billede the_party_dog Nybegynder
02. august 2006 - 14:06 #1
Encoding.Default.GetBytes([VariableNavn])
Avatar billede forceprogrammer Nybegynder
02. august 2006 - 14:10 #2
tusind tak :)
Smid et svar festhund
Avatar billede the_party_dog Nybegynder
02. august 2006 - 14:14 #3
Svar...

Mange siger at man ikke skal benytte Default. Så måske skal du se efter ASCII, eller UTF. Men dette bringer dig videre, så kan du altid analyser dig frem til hvad du ellers vil bruge.
Avatar billede arne_v Ekspert
02. august 2006 - 14:17 #4
Jeg ville aldrig bruge ASCII. Default (ISO-8859-1) eller UTF-8 er vel begge OK
selvom den sidste er mest moderne.

Men hvorfor undlader du ikke bare at kalde Convert.ToBase64String så har du jo et byte array ?
Avatar billede the_party_dog Nybegynder
02. august 2006 - 14:27 #5
Jeg tror han kalder Convert.ToBase64String fordi han gerne vil have MD5 hash'en tilbage som en streng. Dette kan tænkes at han bruger det sammen med en database, hvor han gemmer det hele som en nvarchar. Man kunne jo nemt gemme det som en varbinary.

De fleste eksempler man ser på nettet omkring MD5 og godkendelse af bruger, igennem database registrering af oplysninger, benytter sig af Convert.ToBase64String eksempler.
Avatar billede forceprogrammer Nybegynder
02. august 2006 - 14:38 #6
festhund...Det er helt korrekt.
Jeg gemmer den som en streng i en database fordi jeg bruger den til at lave checksum af en række....Der er noget versionsstyring jeg laver.

Ville det være en bedre ide at gemme det som varbinary ?
Avatar billede the_party_dog Nybegynder
02. august 2006 - 14:46 #7
Varbinary tager det hele som et byte[]. Så konventere du ikke noget frem og tilbage. Du kan holde det hele i dens oprindelige form.

Jeg personligt bruger mest Convert.ToBase64String. Det gør jeg kun for nemheds skyld. Det er lidt nemmere at sammenligne to strenge, end at jeg skal til at lave en løkken som løber igennem 2 arrays og sammenligner dem.

Men det er vel en smags sag, jeg har ihvertfald ikke haft problemer med Convert.ToBase64String metoden.

Men arne_v, du kan vel komme med et godt argument og eksempler, elsker når jeg lærer noget nyt omkring denne dejlige dotnet verden. So please, fill in... :-)
Avatar billede forceprogrammer Nybegynder
02. august 2006 - 14:53 #8
Ja det kan jeg godt se....Men man kan vel altid bruge Equals metoden på bytearrayet. Så slipper man for at drøne forløkker igennem.

Hvad hvis man gerne vil konvertere et vilkårligt object til en streng. Hvordan gør jeg det smart?
Avatar billede the_party_dog Nybegynder
02. august 2006 - 14:59 #9
Det kommer jo an på mange ting... Ved du at objekt'et er en string?

(string)[Variabel] = typecasting. Du ved at variablen er en string/indeholde en gyldig string.
Convert.ToString([Variabel]) = Konventering. Du forsøger at lave indholdet af variablen om til en string.
Avatar billede the_party_dog Nybegynder
02. august 2006 - 15:01 #10
Omkring det du skriver med at kan bruge Equals metoden til at sammenligne to byte[] vil jeg ikke sige at jeg er sikker på det virker.

Quote msdn:
Object.Equals Method
Determines whether two Object instances are equal.

Det lyder ikke for mig som om de sammenligner indeholdet af sig selv, men om de er ens. Ved som ikke om "ens" dækker indholdet af byte[].
Avatar billede forceprogrammer Nybegynder
02. august 2006 - 15:09 #11
hmmm nej det har du self. ret i...men du kan vel altid overloade equals metoden og implementere din egen, således at den kigger i indholdet...

Mht. at konvertere et vilkårligt object til en streng, objektet kan være mange ting.
Men jeg har bare ordnet det vha. en foreach løkke, og ToString metoden....Det ser ud til at fungere fint :)
Avatar billede the_party_dog Nybegynder
02. august 2006 - 15:14 #12
Du har ret i at jeg kan overloade, men så er det nemme væk for mig igen... :)

Men held og lykke med opgaven.
Avatar billede forceprogrammer Nybegynder
02. august 2006 - 15:21 #13
tak skal du have :)
Og tak for svaret...Hav det godt
Mvh.
Avatar billede arne_v Ekspert
02. august 2006 - 16:34 #14
min pointe var saamand bare at jeg kan se pointen i:

1) gemme binaert

md5.ComputeHash(data) som returnerer byte[]
gemme byte[] i DB
hente byte[] fra DB

2) gemme tekst

md5.ComputeHash(data) som returnerer byte[]
byte[] -> String med ToBase64String
gemme String i DB
hente String fra DB
evt. String -> byte[] med FromBase64String

men at jeg ikke helt kan se pointen i:

3) ?

md5.ComputeHash(data) som returnerer byte[]
byte[] -> String med ToBase64String
String -> byte[] med GetBytes
gemme byte[] i DB
hente byte[] fra DB
evt. byte[] -> String med GetString
evt. String -> byte[] med FromBase64String
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



IT-JOB

Dynamicweb Software A/S

Solution Architect

MAN Energy Solutions

Full Stack Developer

Danske Commodities A/S

Data technician trainee