我对编程很陌生,这个让我摸不着头脑。
嗯,更像是敲我的头。这个程序的想法是获取一个输入,将其转换为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;
}
}
答案 0 :(得分:0)
使用StringBuilder
。然后
for (int i = 0; i < str.length(); i++) {
char a = (char) rand.nextInt(range);
sb.append(str.charAt(i));
sb.append(a);
}
return sb.toString();
更改rand.nextInt()
以适合您想要的字符范围。