编写密码程序(纯文本 - >凯撒密码 - > ASCII)?

Cha*_*lla 5 java encryption ascii

我真的需要知道如何用Java编写这个或类似的代码:http: //www.cs.carleton.edu/faculty/adalal/teaching/f05/107/applets/ascii.html

这是我一整天都在尝试(字面意思)并且不得不在互联网上搜索如何做到这一点因为我的Java知识不那么好我无法理解(今天开始)我不知道与阵列有什么关系)我需要的只是一点帮助或推动正确的方向.

[编辑]抱歉忘了指出这个问题.我遇到的问题不是转换和加密PlainText,而是尝试将编码的消息(当然用我的程序加密)转换为PlainText(即我不能只用我的程序中的变量来反转它我实际上必须能够阅读并解码它)

private void encryptBUTActionPerformed(java.awt.event.ActionEvent evt)    
{                                           
    int encryptLength=encryptTXT.getText().length();
    int[] anArray=new int[encryptLength];
    String key=encryptKey.getText();
    if(key.isEmpty())
    {
        decryptTXT.setText(""+"INVALID KEY");
    }
    else
    {
        int key2=Integer.parseInt(key);
        for(int i=0;i<encryptLength;i++)
        {
            int letter = encryptTXT.getText().toLowerCase().charAt(i);
            System.out.println(letter);
            System.out.println((char)letter);
            int letterCiphered= (letter-key2);
            anArray[i]=letterCiphered;
        }
        String output=(Arrays.toString(anArray));
        decryptTXT.setText(output);
    }
}                                          

private void clearBUTActionPerformed(java.awt.event.ActionEvent evt)               
{                                         
mainPassword.setText("");
encryptTXT.setText("");
decryptTXT.setText("");
encryptKey.setText("");
decryptKey.setText("");
}                                        

private void decryptBUTActionPerformed(java.awt.event.ActionEvent evt)     
{                                           
    int textLength=decryptTXT.getText().length();
    ArrayList list=new ArrayList();
    String text=decryptTXT.getText();
    int count=1;
    String key=decryptKey.getText();
    if(key.isEmpty())
    {
        encryptTXT.setText(""+"INVALID KEY");
    }
    else
    {
        int key2=Integer.parseInt(key);
        for(int i=0;i<textLength;i++)
        {
            if(text.charAt(i)=='['||text.charAt(i)==','||text.charAt(i)==']')
            {
                count=count+1;
            }
            else if(count%2==0)
            {
                char number=text.charAt(i);
                char number2=text.charAt(i+1);
                int num=(int)number;
                int num2=(int)number2;
                int num3=num;
                int num4=num3+num2-15;
                int num5=num4+key2;
                char letter2=(char)num5;
                list.add(letter2);
                count=count+1;
            }
            else
            {

            }
        }
        Object[] obj=(list.toArray());
        String out=Arrays.toString(obj);
        encryptTXT.setText(out);
    }
}
Run Code Online (Sandbox Code Playgroud)

yur*_*rib 0

看来您的加密只是将消息的每个字符移动给定值。

 int letterCiphered= (letter-key2);
Run Code Online (Sandbox Code Playgroud)

要破译这样的消息,您应该将密码的每个字符移动相同的值,但方向相反。

 int letter= (letterCiphered+key2);
Run Code Online (Sandbox Code Playgroud)

代码中的解密函数完全执行其他操作。

根据评论更新:

如果我理解正确的话,你想将一串 ascii 值转换为它们代表的文本。

要解析输入字符串,如果它是简单的格式,您可以使用String.split()read about it 。
要将数字的文本表示形式转换为实际数字,您可以使用Integer.parseInt().
最后,要将整数 ascii 值转换为字符,您只需转换char c = (char)97;

解析输入以识别每个 ascii 值,将每个值转换为整数并将其转换为字符,然后将字符连接到字符串。