这是输出应该是什么样的:使用柱状转置密码加密的演示:

--->输入要加密的消息:是时候开始了吗?

============================使用柱状转置密码加密的消息,没有填充 .

在没有填充的情况下使用2行进行加密:i ttm og e?siiet oyt

使用3行加密而不填充:iiteooesti t mtgy?

使用4行加密而不填充:itmo是一个geiitot

使用5行加密而不填充:i o?stt ioyim etegt

使用6行加密而不填充:itosi t mg?ieot ty

使用7行加密而不填充:iigsmo e i ytte ott?

使用8行加密而不填充:im sey eittto? TGIO

使用9行加密而不填充:iees t t?iot gtoi my

使用10行加密而不填充:i?st oi tg ot iymeet

这是我目前的代码 . 有时会打印问号,但最后几行不起作用 .

public static void encrypt(String input) {
        System.out.println("*============================*");
        System.out.println("Message encrypted with columnar transposition cipher and no padding.\n");
        int x = 0;
        int row = 1;
        for(int r = 1; r <= 9; r++) {
            row++;
            System.out.print("Using "+row+" rows to encrypt without padding: ");
            for(int e = 1; e <= row; e++) {
                for(int i = 1; i <= Math.ceil(input.length()/row); i++) {
                    System.out.print(input.charAt(x));
                    x= x+row;
                    if(x >= input.length()) {
                        break;
                    }
                }
                x = e;
            }
            System.out.println();
        }
    }