Попытка сделать Vigenere Encrypter в Java

EDIT2: думаю, вопрос идет здесь. Итак, мой первый вопрос: правильно ли я сканирую файл (вероятно, нет)?

Поэтому я пытаюсь построить кодировщик в Java, используя шифр Vigenere. Предполагается, что ключевые и простые текстовые файлы передаются в командной строке при выполнении программы (например, ">java vigenere k1.txt pt1.txt"). Затем предполагается сканировать файл на наличие текста (что является одной из частей, я не думаю, что я сделал правильно), где он удалит все не алфавитные буквы и преобразует весь текст в нижний текст для каждой (ключ и обычный текст), и добавьте обычный текст с 'x', если он повторяется, чем текст ключа при повторении. Оттуда предполагается зашифровать обычный текст, сдвигая символы на ключевые символы% 26.

import java.util.Scanner;

public class vigenere {

    //string length constant
    public static final int MAX_LENGTH = 512;    

    public static void main(String[] args) {
        //obtaining file names
        String keyFile = args[0];
        String plainTextFile = args [1];

        //scanning files
        Scanner keyContents = new Scanner(keyFile);
        keyContents.useDelimiter("//Z");
        Scanner plainTextContents = new Scanner(plainTextFile);
        plainTextContents.useDelimiter("//Z");

        //turn scanners into strings
        String key = keyContents.next();
        String plainText = plainTextContents.next();

        //conver string to stringbuilder
        StringBuilder key1 = new StringBuilder(key);
        StringBuilder plainText1 = new StringBuilder(plainText);

        //set length of strings
        key1.setLength(MAX_LENGTH);
        plainText1.setLength(MAX_LENGTH);

        //set stringbuilder back to string
        key = key1.toString();
        plainText = plainText1.toString();

        System.out.println("Original Key:");
        System.out.println(key);
        System.out.println("****************************");
        System.out.println("Original PlainText:");
        System.out.println(plainText);
        System.out.println("****************************");

        encrypt(plainText, key);
    }

    static void encrypt(String plainText, String key) {
        //new strings
        String newKey = "";
        String newPlainText = "";

        //convert to all lowercase
        key = key.toLowerCase();
        plainText = plainText.toLowerCase();

        for(int i=0; i<key.length(); i++) {
            char currentKey = key.charAt(i);
            if(currentKey < 'a' || currentKey > 'z')
                continue;
            newKey += (char)(currentKey);
        }

        System.out.println(newKey);

        for(int i=0, j=0; i<plainText.length(); i++) {
            char currentPlainText = plainText.charAt(i);
            if(currentPlainText < 'a' || currentPlainText > 'z')
                continue;
            newPlainText += (char)((currentPlainText + newKey.charAt(j) % 26) + 'A');
        }

        System.out.println(newPlainText);
    }
}

Выходы в настоящее время:

Original Key:
k1.txt
****************************
Original PlainText:
p1a.txt
****************************
ktxt
´¥¸¼¸

0 ответов

Другие вопросы по тегам