Xor verschlüsseln - FEHLER
-
Hi,
ich habe auf AndreasW's Homepage ein Snippet für xor-verschlüsselung verbessern wollen, aber in der 1.Zeile stimmt alles, doch danach nicht mehr:(Verschlüsseln
AnsiString S = RichEdit1->Text; for (int i=1; i < S.Length()+1;i++) { if( x < 251 ) { S[i] = S[i]^versch[x]; x++; } else { x = 0; S[i] = S[i]^versch[x]; } Byte I = char(S[i]); if (I > 127) { I = I << (1); I = I |1; } else I = I << (1); S[i]= (char)I; } RichEdit2->Text = S;
Entschlüsseln:
AnsiString S = RichEdit1->Text; for (int i=1; i < S.Length()+1;i++) { Byte I = S[i]; if ((I &1) == 1) { I = I >> (1); I = I | (0x80); } else I = I >> (1); S[i]= (char)I; if( x < 251 ) { S[i] = S[i]^versch[x]; x++; } else { x = 0; S[i] = S[i]^versch[x]; } } RichEdit2->Text = S;
versch :
const int versch[500] =
{ 5, 6, 111, 299, 7251, 5, 154, 51, 255, 254,
32656, 5454, 231, 1655, 321, 12, 654, 54, 321, 256,
984, 889754, 65, 2151, 898, 65, 658, 96357, 852, 988,
255, 654, 84564, 6565, 321, 84, 654, 987, 5128, 984,
56465, 541, 150, 502, 6565, 54641, 4, 156, 456, 20,
12, 1, 8, 6548, 2458, 4528, 245, 652, 58, 456,
581, 8, 330, 440, 8256, 2564, 3216, 8754, 49564, 32123,
115, 51, 560, 5335, 406, 65, 4545, 8921, 356, 5465,
8756, 86, 879, 79, 6585, 258, 2515, 244, 65520, 4054,
1880, 10214, 1024, 1956, 15621, 964, 955, 22156, 365, 999,
684, 46512, 52010, 520, 5051, 45, 10181, 56120, 18106, 3498,
35164, 6535, 4684, 2156, 0, 654, 854, 654, 95, 8522,
754, 9510, 550, 5810, 980, 521, 498, 357, 159, 3065,
87, 165, 86254, 66, 647, 999, 666, 888, 777, 222,
333, 444, 8888, 141, 2468, 4654, 484, 6548, 41684, 4888,
46584, 8461, 521, 85364, 5468, 4821, 34586, 1325, 1248, 2165,
451, 12154, 23165, 841515, 2541, 44564, 4987, 549, 54685, 987,
32198, 3, 7, 168, 1, 5681, 49, 27651, 764657, 841,
54, 681, 5498, 41, 564, 5521, 684, 51, 54, 651,
65, 451, 564, 641, 61, 5465, 513151, 21651, 5351, 515,
159, 15, 151, 123, 165, 9874, 1421, 7, 57, 845679,
45647, 98745, 498, 43, 468, 43219, 74531, 98745, 319874, 632198,
43654, 1546, 465113, 321321, 9815, 451, 351, 805, 10, 45,
456, 15, 165, 15, 4561, 51, 206, 202, 2662, 15651,
20, 9992, 111, 10003, 485, 456, 4003, 1231, 321654, 995,
5, 6, 111, 299, 7251, 5, 154, 51, 255, 254,
32656, 5454, 231, 1655, 321, 12, 654, 54, 321, 256,
984, 889754, 65, 2151, 898, 65, 658, 96357, 852, 988,
255, 654, 84564, 6565, 321, 84, 654, 987, 5128, 984,
56465, 541, 150, 502, 6565, 54641, 4, 156, 456, 20,
12, 1, 8, 6548, 2458, 4528, 245, 652, 58, 456,
581, 8, 330, 440, 8256, 2564, 3216, 8754, 49564, 32123,
115, 51, 560, 5335, 406, 65, 4545, 8921, 356, 5465,
8756, 86, 879, 79, 6585, 258, 2515, 244, 65520, 4054,
1880, 10214, 1024, 1956, 15621, 964, 955, 22156, 365, 999,
684, 46512, 52010, 520, 5051, 45, 10181, 56120, 18106, 3498,
35164, 6535, 4684, 2156, 0, 654, 854, 654, 95, 8522,
754, 9510, 550, 5810, 980, 521, 498, 357, 159, 3065,
87, 165, 86254, 66, 647, 999, 666, 888, 777, 222,
333, 444, 8888, 141, 2468, 4654, 484, 6548, 41684, 4888,
46584, 8461, 521, 85364, 5468, 4821, 34586, 1325, 1248, 2165,
451, 12154, 23165, 841515, 2541, 44564, 4987, 549, 54685, 987,
32198, 3, 7, 168, 1, 5681, 49, 27651, 764657, 841,
54, 681, 5498, 41, 564, 5521, 684, 51, 54, 651,
65, 451, 564, 641, 61, 5465, 513151, 21651, 5351, 515,
159, 15, 151, 123, 165, 9874, 1421, 7, 57, 845679,
45647, 98745, 498, 43, 468, 43219, 74531, 98745, 319874, 632198,
43654, 1546, 465113, 321321, 9815, 451, 351, 805, 10, 45,
456, 15, 165, 15, 4561, 51, 206, 202, 2662, 15651,
20, 9992, 111, 10003, 485, 456, 4003, 1231, 321654, 995};Kann mir jemand den fehler sagen???
Was mache ich falsch??
-
Vielleicht solltest du mal erzählen WAS für ein Fehler genau auftritt?!? Ich denke der Fehler liegt darin, dass du den Debugger nicht einsetzt.
-junix
-
Hi TimN
Ich glaub Dein Fehler ist folgender:
- Du 'verbesserst' einen Algor, ohne genau zu wissen, wie das Original funktioniert!
- Du musst das Entschluesseln parallel dazu anpassen!!!Tip:
lade noch mal das Original, schau Dir mit'm Debugger genau an, was dabei passiert.
Mach Deine Verbesserung in BEIDEN Teilen nochmalPS: und immer an Junix Tip halten: DEBUGGER benutzen!