Toon posts:

[JAVA] XOR Encryptie

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste Tweakers :)

na veel te hebben gelezen over XOR ( Zowel boeken als op google & op dit flora ) zit ik toch nog steeds met het volgende probleem:

Ik wil het volgende bereiken:

Ik heb 2 ASCII HEX strings:

- ( goudvis ) :: 676F7564766973
- (computer ) :: 636F6D7075746572

Nu wil ik met de XOR key ( computer ) goudvis gaan 'encrypten'

code:
1
2
3
4
5
6
7
8
9
// encrypting  a[] with key k[] into e[]
// a[] = array to be encrypted
// k[] = key of truly random gibberish
// e[] = encrypted data
byte[] e = new byte[a.length];
for ( int i=0; i<a.length; i++ )
   {
   e[i] = (byte)( a[i] ^ k[i] );
   }


Dit is het meest 'bruikbare' stuk code wat ik momenteel heb kunnen vinden middels google ( Gevonden op : http://mindprod.com/jgloss/xor.html )

Graag zou ik het gebruiken in bijvoorbeeld de volgende mannier :

code:
1
2
3
4
5
  public String getXOR (String xorKey, String xorToEncrypt) {
        //hier moet het dan gaan gebeuren
  return strEncrypted;

  }

[ Voor 4% gewijzigd door Verwijderd op 23-09-2004 08:52 ]


  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

a[] = je input string
k[] = wat in het commentaar staat
e[] = je output string

Wat is nou precies het probleem?

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:49

Janoz

Moderator Devschuur®

!litemod

Waarom maak je eingelijk een string waarin je een hexadecimaal getal uitschrijft? Het lijkt mij veel makkelijker om gewoon meerdere bytearrays te gebruiken. Die extra conversies die jij nu toepast maakt het alleen maar nodeloos ingewikkeld. Daarnaast is het stukje code wat je gevonden hebt ook gericht op een bytearray.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
limoentje schreef op 23 september 2004 @ 09:02:
a[] = je input string
k[] = wat in het commentaar staat
e[] = je output string

Wat is nou precies het probleem?
Om de gegevens middels de gewenste mannier aan te roepen, het komt binnen als een String, ik heb geen idee wat voor type array er word verwacht, mijn compiler geeft telkens incompatible types ( en geen info wat het wel moet zijn )

[edit] Ah byte array, eens kijken of me dat verder helpt :X

[edit2] Waarom maak je eingelijk een string waarin je een hexadecimaal getal uitschrijft? ( zo krijg ik het binnen uit een web applicatie waar ik nix aan kan veranderen )

[ Voor 22% gewijzigd door Verwijderd op 23-09-2004 09:18 ]


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 20:53

Robtimus

me Robtimus no like you

Verwijderd schreef op 23 september 2004 @ 08:51:
code:
1
2
3
4
5
6
7
8
9
// encrypting  a[] with key k[] into e[]
// a[] = array to be encrypted
// k[] = key of truly random gibberish
// e[] = encrypted data
byte[] e = new byte[a.length];
for ( int i=0; i<a.length; i++ )
   {
   e[i] = (byte)( a[i] ^ k[i] );
   }
Ben ik de enige die hier een mogelijke ArrayIndexOutOfBoundsException in ziet?

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
IceManX schreef op 23 september 2004 @ 10:49:
[...]
Ben ik de enige die hier een mogelijke ArrayIndexOutOfBoundsException in ziet?
Een "mogelijke" ? :X
Dit gaat geheid fout :Y)

Ik zou mijn key-string effe padden met wat spaties, of beter: met zichzelf, om te zorgen dat beide strings even lang zijn:

code:
1
2
encryptthis
keykeykeyke

[ Voor 3% gewijzigd door RobIII op 23-09-2004 10:53 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 20:53

Robtimus

me Robtimus no like you

RobIII schreef op 23 september 2004 @ 10:53:
[...]

Een "mogelijke" ? :X
Dit gaat geheid fout :Y)
Alleen als a.length > k.length. Wat in de praktijk best vaak kan gebeuren ja ;)
Ik zou mijn key-string effe padden met wat spaties, of beter: met zichzelf, om te zorgen dat beide strings even lang zijn:

code:
1
2
encryptthis
keykeykeyke
Of de index van de key modulair te gebruiken:
code:
1
k[i % k.length]

More than meets the eye
There is no I in TEAM... but there is ME
system specs

Pagina: 1