首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使解密方法能够将加密的字符串返回到原始字符串?

如何使解密方法能够将加密的字符串返回到原始字符串?
EN

Stack Overflow用户
提问于 2013-10-08 18:22:38
回答 1查看 1.9K关注 0票数 1

我已被指示编写一个程序,该程序应该通过用户输入对给定的字符串进行加密,并为输入的每个字母生成一个随机加密字符,同时确保在原字符串中出现多次的相同字符被编码字符串中的相同字符替换。

我还必须确保原字符中没有两个字符被编码为编码字符串中的相同字符,以便能够成功解密。

然而,解密给了我一个完全不同的字符串,我在第一时间。任何帮助或建议都将不胜感激。

代码语言:javascript
复制
public class Caesar {
public static final int ALPHASIZE = 26;             // upper case alphabets
public static final char[] alpha = {'A','B','C','D',
    'E','F','G','H','I','J','K','L','M','N','O','P',
    'Q','R','S','T','U','V','W','X','Y','Z'};


protected char[] encrypt = new char [ALPHASIZE];    // encryption array
protected char[] decrypt = new char [ALPHASIZE];    // decryption array

// constructor that initializes the encryption and decryption arrays

Random randomGen = new Random();

public Caesar() {

int random = randomGen.nextInt(ALPHASIZE);

{
    for(int i=0; i< ALPHASIZE; i++)
        encrypt[i]=alpha[(i+random)%ALPHASIZE]; 

    for(int i=0; i< ALPHASIZE; i++)
        decrypt[encrypt[i]- 'A']=alpha[i];   
}
}

// encryption method
public String encrypt(String secret)
{
    char[] mess = secret.toCharArray();     // the message array
    for(int i=0; i<mess.length; i++)        // encryption loop
        if(Character.isUpperCase(mess[i]))  // a letter to change
            mess[i]=encrypt [mess[i]-'A'];  // use letter as index
        else  if(Character.isLowerCase(mess[i]))  // a letter to change
            mess[i]=(new String(""+encrypt [mess[i]-'a'])).toLowerCase().charAt(0);  // use letter as index
    return new String (mess);
}

// decryption method
public String decrypt (String secret)
{
    char[] mess = secret.toCharArray();
    for(int i=0; i<mess.length; i++)
        if (Character.isUpperCase(mess[i]))
            mess[i]=decrypt[mess[i]-'A'];
         else  if(Character.isLowerCase(mess[i]))  // a letter to change
            mess[i]=(new String(""+decrypt [mess[i]-'a'])).toLowerCase().charAt(0);  // use letter as index
    return new String (mess);

}
}

Test Class
public class CaesarTryOut {


public static void main(String[] args) {


System.out.println("Please enter your message:");
Scanner scan = new Scanner(System.in);
String c = scan.nextLine();
System.out.println();

System.out.println("You entered the following message:");
System.out.println(c);
System.out.println();

Caesar cipher = new Caesar();

String code = c;



String secretEncrypt = cipher.encrypt(c);
System.out.println("Your string has been encrypted to:");
System.out.println(secretEncrypt);
System.out.println();



String secretDecrypt = cipher.decrypt(c);
System.out.println("Your message has been decrypted to:");
System.out.println(secretDecrypt);
System.out.println();

}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-08 20:02:06

您正在解密用户提供的输入的字符串,为了解密消息,您必须传递您得到的加密字符串的参数。

字符串secretDecrypt = cipher.decrypt(secretEncrypt);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19255381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档