How do you apply a Vignere cipher to decode the have a nice weekend file?

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.


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.