Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Huiswerkvragen: Exacte vakken (https://forum.scholieren.com/forumdisplay.php?f=17)
-   -   [??] Hulp bij Visual basic (https://forum.scholieren.com/showthread.php?t=1911271)

prophecy223 03-02-2016 13:22

Hulp bij Visual basic
 
Beste

ik moet een programma schrijven in vb, een basisprogramma waar ik bv een zin moe encrypteren en die zin moet ik dan terug kunnen zetten dus decrypteren.
het is een basis maar ik kan de code niet vinden hoe ik dit moet oplossen
hier is een screenschot van een voorbeeldje

https://gyazo.com/da2f94ed5fb61adb1a1169cd5008c2f8

hopelijk kan er mij iemand helpen


mvg

Fool_ 04-02-2016 21:24

Zitten er eisen aan je encryptiealgoritme of mag je simpelweg een Ceasar cipher gebruiken?

Dat laatste houd in dat je steeds één letter door dezelfde andere letter vervangt en dus eigenlijk een plaatsvervangend alfabet gebruikt.

Rob 08-02-2016 14:56

Citaat:

Fool_ schreef: (Bericht 34015720)
Zitten er eisen aan je encryptiealgoritme of mag je simpelweg een Ceasar cipher gebruiken?

Dat laatste houd in dat je steeds één letter door dezelfde andere letter vervangt en dus eigenlijk een plaatsvervangend alfabet gebruikt.

Als ik zijn screenshot zo zie, dan gaat het simpelweg om een cipher.

Met de aanname dat ciphers okay zijn en dat je met VB eigenlijk VB.NET bedoelt, dan kan je een relatief simpele oplossing schrijven met behulp van een Dictionary(Of Char, Char). Een Dictionary is een key-value pair waarbij de key maar één keer voor mag komen, maar de value meerdere malen.

Kort voorbeeldje (in C#, redelijk makkelijk te vertalen naar VB.NET):
PHP-code:

public class Encrypter {
  
// Dictionary die de mappings vast legt
  
private static Dictionary<CharCharencryptionDictionary = new Dictionary<CharChar> {
    { 
'v''Z' },
    { 
'E''b' },
    
// etc.
  
}

  public static 
string Encryptstring valueToEncrypt ) {
    var 
encryptedString "";
    
    foreach( var 
c in valueToEncrypt ) {
      
encryptedString += EncryptCharacterencryptionDictionary);
    }

    return 
encryptedString;
  }
    
  private static 
Char EncryptCharacterDictionary<CharChardictionaryChar charToEncrypt ) {
    if( 
dictionary.ContainsKey) {
      return 
dictionary];
    } else {
      return 
"+";
    }
  }


Let op, dat in de gecodeerde string zelf een hint zit naar het gebruikte algoritme, namelijk de @3. Je moet die er dus aan toevoegen voordat je de string zelf gaat encrypten.
Nu hoef je alleen nog maar de volgende dingen te doen:
- Meerdere vertaaltabellen te maken (bijvoorbeeld op basis van Ceasar Ciphers of ROT13)
- Vergeet niet dat je ook nog terug moet
- Willekeurig een getal te kiezen
- Dit getal te koppelen aan een vertaaltabel
- Een string te decrypten op basis van de juiste vertaaltabel.

In plaats van een Dictionary<Char,Char> zou je ook zelf een bidirectionele dictionary kunnen bouwen voor een één-op-één mapping.

Let op de valkuil dat 'onbekende karakters een +' worden. Hierdoor is de mapping niet strikt één-op-één, maar meer-op-één: je kunt wel verifiëren dat het encrypten is gelukt (immers, zowel spatie als een ander onbekend teken worden allebei een +), maar het verifiëren van het decrypten kan niet, want een + kan meerdere karakters voorstellen.


Alle tijden zijn GMT +1. Het is nu 01:43.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.