08. januar 2004 - 12:15
Der er
10 kommentarer og 1 løsning
krypterings key.
jeg har lidt kode :) char Key[100] = "12345678901234567890"; time_t t = time(NULL); strftime(buf,sizeof(buf),"%S%S%S%H%M%S%S%M%S%M%H%S%M%S%M%H%H%M%S%M%H%S%H%M%S%S%S",localtime(&t)); Edit4->Text = buf; int i; char Plaintext[100] = ""; //variabel til teksten strcat(Plaintext,Edit1->Text.c_str()); //få variabelen fra tekstboxen int l = strlen(Plaintext); char Resultat[100] = ""; for(i=0;i<l;i++) { buf[i] = buf[i] + Key[i]; } Edit5->Text = buf; for(i=0;i<l;i++) { Resultat[i] = Plaintext[i] ^ buf[i]; // Plaintext[i] + Key[i]; } Resultat[l] = '\0'; Edit2->Text = Resultat; hvis at det falder sammen så at det der kommer til og stå i den krypetert key (buf) falder sammen med et af de det står i plain tekst så dur det ikke.. fx hvis buf[10] er a og Plaintext[10] er a så vil den ik lave resten af den string om så bliver resten bare væk ??? /mad_man
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
08. januar 2004 - 12:35
#1
En lille C finesse ! en byte XOR sig selv = en nul byte og nul byte = slut på streng
08. januar 2004 - 12:37
#2
Output fra kryptering kan normalt antage alle værdier 0-255 og er derfor ikke egnet til visning. Muligheder: 1) vis det krypterede som hex 2) vælg en special krypering hvor output altid vil være text
08. januar 2004 - 12:38
#3
hvad kan man så gøre ??
08. januar 2004 - 12:41
#4
hvordan laver man det så om til hex ?
08. januar 2004 - 12:58
#5
ENten må du bruge sprintf/sscanf med %2X eller så lave noget hånd kode. Jeg kan godt lave et eksempel. Senere.
08. januar 2004 - 12:59
#6
=) ok
08. januar 2004 - 18:37
#7
#include <stdio.h> #include <string.h> char tohex(int val) { return (val < 10) ? ('0' + val) : ('A' + val - 10); } int fromhex(char c) { return (c < 'A') ? (c - '0') : (c - 'A' + 10); } void bin2hex(char *s1, int n1, char *s2) { int i; int ix = 0; for(i=0;i<n1;i++) { s2[ix] = tohex((s1[i] >> 4) & 0x0F); ix++; s2[ix] = tohex(s1[i] & 0x0F); ix++; } s2[ix] = '\0'; } void hex2bin(char *s1, char *s2, int *n2) { int i; for(i=0;i<strlen(s1)/2;i++) { s2[i] = (fromhex(s1[2*i]) << 4) | fromhex(s1[2*i+1]); } *n2 = strlen(s1)/2; } int main() { int l; char s1[10] = "ABC"; char s2[10]; char s3[10]; bin2hex(s1,3,s2); hex2bin(s2,s3,&l); s3[l] = '\0'; printf("%s -> %s -> %s\n",s1,s2,s3); return 0; }
08. januar 2004 - 18:38
#8
Det er kun bin2hex og hex2bin (+ de 2 hjælpe funktioner tohex og fromhex) du skal bruge. Min main er kun til test - og den forudsætter at det er læsbare tegn, hvilket dine jo netop ikke er.
22. januar 2004 - 13:09
#9
Er det mulig og dekrypter fra det output der kommer fra s2, til det input som man skrev i s1?
22. januar 2004 - 13:40
#10
Ja da. kryptering = XOR + bin2hex dekryptering = hex2bin + samme XOR
23. januar 2004 - 22:17
#11
Lukke tid ?
Kurser inden for grundlæggende programmering