Java: Vigenere Cipher Short Code

Home / Java: Vigenere Cipher Short Code

vigenere Source: Google Images, Wikipedia

Hey folks! for those who are searching for vigenere cipher in java implementation here is a short code.

public static String vigenere(String str, String key) 

    String pattern = "abcdefghijklmnopqrstuvwxyz";
    str = str.toLowerCase();
    key = key.toLowerCase();

    char char_key,char_str;

    int key_index=0;
    int str_index=0;

    int j=0;

    String cyphertext="";

    for(int i=0;i<=str.length()-1;i++) 

        //character position of key
        char_key = key.charAt(i);
        key_index = pattern.indexOf(char_key);

        //character position of str
        char_str = str.charAt(i);
        str_index = pattern.indexOf(char_str);

            j = (Math.abs(key_index+str_index))%26;
            cyphertext = cyphertext+char_str;

    return "Cypher text: " + cyphertext;

Basic usage


Vigenere cipher works like caesars cipher but unlike ceasar, this cipher rotate each letter by an alphabetical input not by number

e.g ceasar cipher works like this

caesar text = a

ceasar rotate number = 2

ceasar output = c

the output becomes c, because letter a has been incremented by 2 (a+2 = ..b..c)

On vigenere cipher, it works like this

vigenere text = f

vigenere key = b

vigenere output = g

the output becomes g because the vigenere key is letter b. and on my code, b is positioned as number 1 (a=0 or zero) therefore (f+1 = ..g)

btw, vigenere cipher has been named after Blaise de Vigenère, but actually wikipedia said that Giovan Battista Bellaso is the one who invented it. poor guy.

okay that''s it. :)