我对编程非常陌生,这一次让我抓狂。
嗯,更像是敲打我的头。
这个程序的思想是获取一个输入,将其转换为ascii,然后转换为十六进制,然后创建一个随机字符,在第一个十六进制字符之后插入它,获取第二个十六进制字符,然后在第二个十六进制字符之后插入另一个随机字符。
例如:randchar1+hexstring的第一个字符+randchar2+hexstring的第二个字符
例如,
“asdf”的十六进制代码是61736466。我需要做的是将61从组中分离出来,插入随机字符,即“r,u”,这样它就会显示“6r1u”,其中第一个和第三个字符是一个十六进制代码。我不太清楚如何做到这一点,因为字符串是不可变的,我真的被卡住了,这太荒谬了。我已经搜索了数百个论坛,从字面上看,还没有到一个具体的问题是这样的。
除了插入随机字符之外,我需要做的是获取由4个字符组成的新字符串,并遍历每个十六进制代码,我也不知道该怎么做。
即
取61,在索引1和索引3处添加随机字符,取73,重复添加字符,对单词的长度执行此操作。
我对如何做到这一点感到非常困惑,当你一点线索都没有的时候,坐在这里想弄清楚这样的事情是非常令人沮丧的。
我很抱歉,如果我用词不当或使这听起来令人困惑。
这基本上是我们的教授给我们的伪代码,但是我做了很多修改,所以这些代码没有一个是最终的,一半仍然是伪代码。
再次道歉,如果这是可怕的措辞和格式,这是我的第一个职位。我真的只关心加密工作,我不担心解密在这一点上。
如果有人能给我指出正确的方向,让我编写代码,让程序达到这样的程度,那就太好了:
(randchar1+hexstring的第一个字符+randchar2+hexstring的第二个字符):给我一个只有一个十六进制代码的4个字符的字符串。中断每个两位数的十六进制,并在中间添加随机字符,然后遍历每个十六进制代码,以相同的方式在索引2和4处添加随机字母,直到所有十六进制代码都转换为一个4个字符的“加密”字符串
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package encryptionprogram;
import java.util.Random;
import java.util.Scanner;
/**
*
* @author Elliott Cade
*/
public class EncryptionProgram
{
public static void main(String[] args)
{
// TODO code application logic here
Scanner sc = new Scanner(System.in);
String plainText, encryptedText, decryptedText, asciiValue, ASCII;
System.out.print("Enter message: ");
plainText = sc.nextLine(); //takes user input
asciiValue= plainText;
System.out.println();
System.out.println("Encrypted message");
encryptedText = EncryptCharacter(asciiValue);
System.out.println(encryptedText); //disregard
System.out.println();
System.out.println("Decrypted message:");
decryptedText = DecryptMessage(encryptedText); //disregard
System.out.println(decryptedText);
ASCII = EncryptCharacter(asciiValue);
}
public static String EncryptMessage(String plainText)
{
encryptedMsg =
{ //disregard all
}
{
encryptedChar = EncryptCharacter(plainText.charAt(i));
encryptedMsg = encryptedMsg + encryptedChar;
}
Return encryptedMsg
}
public static String DecryptMessage(String encryptedText)
{ String decryptedMsg,encryptedLetter;
decryptedMsg = “”
for each group of 4 characters character in encryptedText
{
encryptedLetter = encryptedText.substring 4 characters
decryptedChar = DecryptCharacter(encryptedLetter);
encryptedMsg = encryptedMsg + decryptedChar;
}
return decryptedMsg;
}
private static String EncryptCharacter(String asciiValue)
{
char[] chars = asciiValue.toCharArray();
StringBuilder hex = new StringBuilder();
for (int i = 0; i < chars.length; i++) //takes input and converts it to hex format
hex.append(Integer.toHexString((int) chars[i]));
System.out.println();
{
}
return hex.toString();
}
public static char DecryptCharacter(String encryptedCharacter)
{
// You need to implement this function
decryptedChar = char1 + char3
ASCIICode = convert hexadecimal decryptedChar to an ASCII decimal code
decryptedChar = convert ASCII code to a character
return decryptedChar;
}
}
1条答案
按热度按时间nuypyhwy1#
使用
StringBuilder
. 那么改变
rand.nextInt()
适合你想要的角色范围。