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

时间:2015-04-28 00:30:10

标签: java

我对编程很陌生,这个让我摸不着头脑。

嗯,更像是敲我的头。

这个程序的想法是获取一个输入,将其转换为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 个答案:

答案 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()以适合您想要的字符范围。