我正在尝试创建一个简单的加密程序,可以轻松地加密和解密,没什么花哨的。 到目前为止我已经设置了基本的输入:
import java.util.Scanner;
class test {
private static Scanner inp;
public static void main(String[] args) {
inp = new Scanner(System.in);
System.out.println("Input Password");
int n = inp.nextInt();
System.out.println(n);
if(n!=234) {
System.out.println("Denied Acess");
} else {
System.out.print("Password Accepted");
}
System.out.print("Input Text to encrypt: ");
String m = inp.next();
System.out.println(m);
}
}
我刚刚开始使用java,这是我的第一个真正的程序,因为我正在自学,它进展缓慢:P(我几天前才开始)
无论如何,我需要一种方法来进行大量输入并进行大量输出,我可以在其中定位字母/数字并将它们更改为相应的预设字符串
示例:
input text: Hello
output text: {aeh}{wer}{qds}{qds}{cxv}
但我还需要一种在输入时读取输出代码并让它输出原始输入的方法,我不知道是否可以使用多个数字来做到这一点,除非我可以做一个 if else 嵌套,例如
if(dig1==a) {
if(dig2==b) {
if(dig3==c) {
System.out.print("a")
} else {
if(dig1==b) {
if(dig2==c) {
if(dig3==d) {
System.out.print("b")
} else {
if (dig1==c) {
if (dig2==d) {
ect.
但即便如此,我也不知道如何自动设置它,以便程序可以自动分配每个数字/设置一个变量,然后将其输出相应的字符串
最佳答案
我读到你的问题是:你已经有了翻译字符串的代码
"He"
进入
"{aeh}{wer}"
现在你问如何以合理的方式扭转这一局面。
一个选项:使用 Map<String, String>
使您可以轻松使用映射:
Map<Character, String> encryptionMappings = new HashMap<>();
encryptionMappings.put('H', "{aeh}");
encryptionMappings.put('e', "{wer}");
... and so on: one put() for all characters you wish to support
Map<String, Character> decryptionMappings = new HashMap<>();
decryptionMappings.put("{aeh}", 'H');
... as above, just "reversed"
现在您可以编写如下代码:
String encryptMe = "He";
StringBuilder builder = new StringBuilder();
for (Character c : encryptMe.toCharArray() ) {
builder.append(encryptionMap.get(c));
}
String encrypted = builder.toString();
上面逐个字符地迭代字符串,然后使用Map查找替换每个字符的字符串。
解密非常相似:您可以迭代字符串列表/数组:
String[] deecryptMe = new String[] { "{aeh}", "{wer}" };
StringBuilder builder = new StringBuilder();
for (String str : deecryptMe) {
builder.append(deecryptionMap.get(str));
}
String decrypted = builder.toString();
(请注意:上面的内容是“伪代码”;我没有通过编译器运行它;所以要小心拼写错误。这个想法是,这向您展示了周围有哪些类,以及如何使用它们简化您正在做的事情)
除此之外:您不需要手动放下解密映射 - 您只需在运行时构建它,通过迭代另一个映射并从那里获取信息。
最后:这里的一个核心部分是坚持单一责任原则。
更新:字符串加密/解密...是一侧。您不应该将其与“扫描仪”工作混合。含义:从一个接受 String 并返回加密 String 的方法开始。测试一下。然后创建一个解密方法。 (您可以做一些好事,例如检查 decrypt(encrypt("whatever")).equals("whatever")
。
当所有这些都有效时;然后编写代码来要求用户输入;并给你字符串;您然后将其输入到这些现有方法中。
关于java - 尝试创建一个简单的加密程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41466665/