gpt4 book ai didi

java - 尝试创建一个简单的加密程序

转载 作者:行者123 更新时间:2023-11-30 08:30:05 25 4
gpt4 key购买 nike

我正在尝试创建一个简单的加密程序,它可以很容易地加密和解密,没什么特别的。到目前为止,我已经设置了基本的输入:

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查找替换每个字符的字符串。

De-crypt 非常相似:您可以迭代字符串列表/数组:

String[] deecryptMe = new String[] { "{aeh}", "{wer}" };
StringBuilder builder = new StringBuilder();
for (String str : deecryptMe) {
builder.append(deecryptionMap.get(str));
}
String decrypted = builder.toString();

(请注意:上面的意思是“伪代码”;我没有通过编译器运行它;所以当心拼写错误。这个想法是向您展示周围有哪些类,以及如何使用它们简化你正在做的事情)

除此之外:您不需要手动放下解密图 - 您可以在运行时构建它,方法是迭代另一个图并从那里获取信息。

最后:这里的一个核心部分是遵守单一责任原则

更新:字符串的加密/解密......是一方。您不应该将其与“扫描仪”工作混合。含义:从一个接受字符串并返回加密字符串的方法开始。测试一下。然后创建一个解密的方法。 (您可以做一些不错的事情,例如检查 decrypt(encrypt("whatever")).equals("whatever")

当所有这些都起作用时;然后编写要求用户输入的代码;并给你字符串;您然后将其输入到那些现有方法中。

关于java - 尝试创建一个简单的加密程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41466665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com