Перепиши данный код на java 
def vigenere_encrypt(text, key, alphabet):
    encrypted = []
    key_indices = []
    n = len(alphabet)

    for k in key:
        if k.lower() in alphabet:
            key_indices.append(alphabet.index(k.lower()))
    key_length = len(key_indices)

    if key_length == 0:
        print("Ключ не содержит символов из выбранного алфавита.")
        return None

    for i, char in enumerate(text):
        if char.lower() in alphabet:
            is_upper = char.isupper()
            idx = alphabet.index(char.lower())
            shift = key_indices[i % key_length]
            encrypted_idx = (idx + shift) % n
            encrypted_char = alphabet[encrypted_idx]
            if is_upper:
                encrypted_char = encrypted_char.upper()
            encrypted.append(encrypted_char)
        else:
            encrypted.append(char)
    return ''.join(encrypted)

def vigenere_decrypt(text, key, alphabet):
    decrypted = []
    key_indices = []
    n = len(alphabet)

    for k in key:
        if k.lower() in alphabet:
            key_indices.append(alphabet.index(k.lower()))
    key_length = len(key_indices)

    if key_length == 0:
        print("Ключ не содержит символов из выбранного алфавита.")
        return None

    for i, char in enumerate(text):
        if char.lower() in alphabet:
            is_upper = char.isupper()
            idx = alphabet.index(char.lower())
            shift = key_indices[i % key_length]
            decrypted_idx = (idx - shift) % n
            decrypted_char = alphabet[decrypted_idx]
            if is_upper:
                decrypted_char = decrypted_char.upper()
            decrypted.append(decrypted_char)
        else:
            decrypted.append(char)
    return ''.join(decrypted)

def combine_keys(key1, key2, alphabet):
    from math import lcm
    key1_indices = []
    key2_indices = []
    n = len(alphabet)

    for k in key1:
        if k.lower() in alphabet:
            key1_indices.append(alphabet.index(k.lower()))
    for k in key2:
        if k.lower() in alphabet:
            key2_indices.append(alphabet.index(k.lower()))

    key1_length = len(key1_indices)
    key2_length = len(key2_indices)

    if key1_length == 0 or key2_length == 0:
        print("Один из ключей не содержит символов из выбранного алфавита.")
        return None

    key_length = lcm(key1_length, key2_length)
    combined_key = ''

    for i in range(key_length):
        shift1 = key1_indices[i % key1_length]
        shift2 = key2_indices[i % key2_length]
        combined_shift = (shift1 + shift2) % n
        combined_char = alphabet[combined_shift]
        combined_key += combined_char
    return combined_key

def main():
    import sys

    print("Выберите алфавит:")
    print("1. Русский")
    print("2. Английский")
    choice = input("Введите номер алфавита (1 или 2): ")

    if choice == '1':
        alphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
    elif choice == '2':
        alphabet = 'abcdefghijklmnopqrstuvwxyz'
    else:
        print("Неверный выбор алфавита.")
        sys.exit()

    n = len(alphabet)

    file_path = input("Введите путь к файлу с исходным текстом (.txt): ")
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            original_text = f.read()
    except FileNotFoundError:
        print("Файл не найден. Проверьте путь и повторите попытку.")
        sys.exit()

    key1_path = input("Введите путь к файлу с первым ключом K1 (.txt): ")
    try:
        with open(key1_path, 'r', encoding='utf-8') as f:
            key1 = f.read().strip()
    except FileNotFoundError:
        print("Файл с первым ключом не найден. Проверьте путь и повторите попытку.")
        sys.exit()

    key2_path = input("Введите путь к файлу со вторым ключом K2 (.txt): ")
    try:
        with open(key2_path, 'r', encoding='utf-8') as f:
            key2 = f.read().strip()
    except FileNotFoundError:
        print("Файл со вторым ключом не найден. Проверьте путь и повторите попытку.")
        sys.exit()


    ciphertext1 = vigenere_encrypt(original_text, key1, alphabet)
    if ciphertext1 is None:
        print("\nПроизошла ошибка при шифровании текста с помощью первого ключа.")
        sys.exit()

    ciphertext2 = vigenere_encrypt(ciphertext1, key2, alphabet)
    if ciphertext2 is None:
        print("\nПроизошла ошибка при шифровании текста с помощью второго ключа.")
        sys.exit()

    combined_key = combine_keys(key1, key2, alphabet)
    if combined_key is None:
        print("\nПроизошла ошибка при составлении комбинированного ключа.")
        sys.exit()

    ciphertext_combined = vigenere_encrypt(original_text, combined_key, alphabet)
    if ciphertext_combined is None:
        print("\nПроизошла ошибка при шифровании с помощью комбинированного ключа.")
        sys.exit()

    key1_filtered = ''.join([char for char in key1 if char.lower() in alphabet])
    key2_filtered = ''.join([char for char in key2 if char.lower() in alphabet])

    print("\n------------------------------------")
    print("\033[1;3mПервый ключ:\033[0m")
    print(key1_filtered)
    print("\033[1;3mШифротекст после первого шифрования:\033[0m")
    print(ciphertext1)
    print("\n------------------------------------")
    print("\033[1;3mВторой ключ:\033[0m")
    print(key2_filtered)
    print("\033[1;3mШифротекст после второго шифрования:\033[0m")
    print(ciphertext2)
    print("\n------------------------------------")
    print("\033[1;3mКомбинированный ключ:\033[0m")
    print(combined_key)
    print("\033[1;3mШифротекст после шифрования с комбинированным ключом:\033[0m")
    # print("\nШифротекст после шифрования с комбинированным ключом:")
    print(ciphertext_combined)
    print("\n------------------------------------")


    with open('output.txt', 'w', encoding='utf-8') as f:
        f.write(ciphertext_combined)

    with open('key3.txt', 'w', encoding='utf-8') as f:
        f.write(combined_key)

    print("\nШифротекст сохранён в файле 'output.txt'.")
    print("Комбинированный ключ сохранён в файле 'key3.txt'.")

    decrypted_text = vigenere_decrypt(ciphertext_combined, combined_key, alphabet)
    if decrypted_text is None:
        print("\nПроизошла ошибка при дешифровании текста.")
        sys.exit()

    print("\nДешифрованный текст:")
    print(decrypted_text)

    if ciphertext2 == ciphertext_combined:
        print("\nШифротексты совпадают. Комбинированный ключ работает корректно.")
    else:
        print("\nШифротексты не совпадают. Проверьте реализацию.")

    if decrypted_text == original_text:
        print("Дешифрование успешно. Исходный текст восстановлен.")
    else:
        print("Дешифрование некорректно. Проверьте реализацию.")

if __name__ == "__main__":
    main()