2

According to the Doki Doki Literature Club wiki, have a nice weekend! is a file which is created in Act 2 during the weekend which the player spends with

Yuri's corpse,

reading as follows:

G2pilVJccjJiQZ1poiM3iYZhj3I0IRbvj3wxomnoeOatVHUxZ2ozGKJgjXMzj2LgoOitBOM1dSDzHMatdRpmQZpidNehG29mkTxwmDJbGJxsjnVeQT9mTPSwSAOwnuWhSE50ByMpcuJoqGstJOCxqHCtdvG3HJV0TOGuwOIyoOGhwOHgm2GhlZpyISJik3J/

This text is encoded first in Base64 and also by a Vigenère cipher with the key "libitina." When decoded it reveals a short sentence:

What is a man without knowing the rich aroma of the future; the hot, complex balance of the present; and the bittersweet aftertaste of the past?

My question is, how is the Vignere cipher and Base64 decoding applied to get the secret message? I've found multiple references to using a Vigenere cipher and Base64 decoding, but nothing actually explaining how to set up the cipher.

  • 3
    This seems less a gaming issue than a cryptography lesson. – Frank Nov 6 '17 at 18:58
  • 5
    @Frank It's an in-game challenge delivered directly by the antagonist to the player character, it's as on-topic as you can get. It's a bad crypto question anyway, Crypto and Security Stack Exchange both hate raw "solve this code for me" questions, doubly-so if the solution is just finding out what cipher is used. – user149305 Nov 6 '17 at 21:41
  • If you're asking how you're supposed to solve it in-game, I have no issue with it at all. But that's not how it's sounding, to me. You just want to know how to turn an encrypted string into a legible output. The only part of that that's gaming related is the source itself. Since you already know what the output is supposed to be, there's not really much left here that's actually about gaming. – Frank Nov 7 '17 at 1:14
  • 5
    @Frank I'm asking about "Puzzle solving or obstacle clearing", no more and no less. That's all there is to this question and I will say no more on the subject. If you are capable of answering the question, I'd appreciate it. If you feel this is a bad question, please use the down arrow next to the question. If this is an off-topic question, please cast a vote to close with an appropriate reason. That's all I'll say on the matter. – user149305 Nov 7 '17 at 1:20
7

A Vigenere cipher is essentially a substitution cipher. It is based around an alphanumeric grid shown below (source: http://www.dcode.fr/vigenere-cipher).

enter image description here

What you first do is take the key (libitina) and repeat it until you have a string equally as long as the encrypted text. Then you go down the encrypted text and for each character, you find the row of the corresponding character in the key and then go along that line until you find the character from the encrypted text. The character at the top of the column is the plaintext result. Casing is preserved and nonalphanumeric characters are skipped.

Example: the first character is a G, and the first character of the keystring is an L. Checking the table above, in row L, character G can be found in column V, so the first character of the decrypted text is a V.

Going through the entire ciphertext with the help of the decoder above brings us this string:

V2hhdCBpcyBhIG1hbiB3aXRob3V0IGtub3dpbmcgdGhlIHJpY2ggYXJvbWEgb2YgdGhlIGZ1dHVyZTsgdGhlIGhvdCwgY29tcGxleCBiYWxhbmNlIG9mIHRoZSBwcmVzZW50OyBhbmQgdGhlIGJpdHRlcnN3ZWV0IGFmdGVydGFzdGUgb2YgdGhlIHBhc3Q/

If you then Base64 decode this, you get the original string about the taste of time.

  • Gotcha. I kept trying to work the numbers and capitalization into the Cipher instead of just passing them through. Thanks for the help! – user149305 Nov 7 '17 at 20:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy