1 Inleiding

  Om eventuele stemfraude op te sporen heeft Minister Remkes opdracht gegeven om de uitvoer van
  de stem computers te voorzien van een semi unieke code gebaseerd op de inhoud van de originele
  resultaten. Als een onverlaat de uitslagen mocht aanpassen nadat ze de stemcomputer hebben 
  verlaten dan kan dit nu vastgesteld worden. 
  
  Uiteraard zijn er nog vele andere manieren van fraude mogelijk, maar het is belangrijk dat een
  illusie van betrouwbaarheid leeft bij het grote publiek. 
  
2 Opdracht

  Implementeer de methode 'digest' welke als invoer het originele bericht heeft en een algoritme
  waarmee het bericht moet worden omgezet naar een semi unieke code. Deze algoritmen zijn welbekende
  en doorgeteste algoritmen zoals MD5 en SHA. There is no Security in Obscurity. Gelukkig heeft
  Java een security package met implementaties van deze algoritmen. Dat scheelt weer werk.
  
  Er zijn een paar uitzonderingen :
  - Als het bericht NULL is dan is de digest ook NULL.
  - Als het algoritme NULL is dan is de digest de hexadecimale representatie van de bericht bytes.
  - Bestaat een algoritme niet dan moet een RuntimeException gegooid worden.

3 Voorbeeld

  De verkiezingsuitslag is bijvoorbeeld 'PvdA:25%' en het algoritme is NULL dan is de uitkomst
  de hexadecimale representatie van de string bytes : '507664413a323525'. Waarbij de 'P' dan
  overeenkomt met '50'. 0x50 hexadecimaal is 80 in decimale notatie en komt overeen met het 
  karakter P. 
  
  De verkiezings uitslag is bijvoorbeeld 'PvdA:25%' en het algoritme is 'SHA' dan is de uitkomst :
  '27f8b8717d72dd8b41493249517bdc42'

4 Tips

  - de algoritmen zijn al geimplementeerd in de java.security package.
  - De Integer klasse heeft een interesante methode voor het omvormen van integers naar hexStrings.
  - Jammer alleen dat je geen integers hebt..
  - en een byte altijd moet resulteren in 2 hexadecimale digits...

