Registreer FAQ Ledenlijst Berichten van vandaag


Ga terug   Scholieren.com forum / School & Studie / Huiswerkvragen: Exacte vakken
Reageren
 
Topictools Zoek in deze topic
Oud 03-02-2016, 13:22
prophecy223
prophecy223 is offline
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
Met citaat reageren
Advertentie
Oud 04-02-2016, 21:24
Fool_
Fool_ is offline
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.
Met citaat reageren
Oud 08-02-2016, 14:56
Rob
Avatar van Rob
Rob is offline
Citaat:
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.
__________________
Bad spelling and grammar make me [sic].
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar

Soortgelijke topics
Forum Topic Reacties Laatste bericht
Software & Hardware [Prog] C++: hoe te beginnen?
pietervdb
16 28-05-2005 09:27
Software & Hardware [Java] Hulp bij schoolopdracht
alpha
33 16-04-2004 17:22
Huiswerkvragen: Exacte vakken Hulp bij informatica po
mick
4 14-12-2001 09:55


Alle tijden zijn GMT +1. Het is nu 04:00.