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 nochmal

    PS: und immer an Junix Tip halten: DEBUGGER benutzen!


Anmelden zum Antworten