java—获取十六进制字符,在其后插入随机字符,获取第二个十六进制字符并插入另一个随机字符

fruv7luv  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(269)

我对编程非常陌生,这一次让我抓狂。
嗯,更像是敲打我的头。
这个程序的思想是获取一个输入,将其转换为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;

}

}

nuypyhwy

nuypyhwy1#

使用 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() 适合你想要的角色范围。

相关问题