【问题标题】:take hex character, insert random character after it, take second hex character and insert another random character取十六进制字符,在其后插入随机字符,取第二个十六进制字符并插入另一个随机字符
【发布时间】:2015-04-28 08:47:57
【问题描述】:

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

嗯,更像是在敲我的头。

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

}

}

【问题讨论】:

    标签: java


    【解决方案1】:

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

    【讨论】:

    • 非常感谢您的回复!我将如何将其合并到我的代码中...?如果这些是非常无味的问题,我很抱歉,但我是初学者的初学者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 2012-05-10
    • 2017-03-22
    • 2016-02-26
    • 2023-04-09
    • 2018-01-31
    相关资源
    最近更新 更多