gpt4 book ai didi

java - 加密用户输入

转载 作者:行者123 更新时间:2023-12-01 09:08:32 25 4
gpt4 key购买 nike

我正在制作一个加密程序,对用户输入的单词进行加密,除了输出输入的加密单词之外,我一切正常。这是我的代码现在的样子:

1 级

public class Encryption {

String encrypt = "test";
String key;
String message;
String alpha;
Encryption(){
encrypt = Encrypt();
}
private String Encrypt(){

String[] alphabet = {
"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"

};


StringBuilder sbAlphabet = new StringBuilder();

for (int i = 0; i <= 25; i++) {
sbAlphabet.append(alphabet[i]);
}
alpha = sbAlphabet.toString();
return encrypt;
}
}

2级

package encryption;

import java.util.Random;

public class Key {

String key;

Key() {
key = genKey();
}
private String genKey() {

String[] scrambled = {
"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"

};

int r;
String temp;
String key;
StringBuilder sbScrambled = new StringBuilder();

for (int i = 0; i <= 25; i++) {
r = (int)(25*Math.random() + 1);
temp = scrambled[i];
scrambled[i] = scrambled[r];
scrambled[r] = temp;
}
for (int i = 0; i <= 25; i++) {
sbScrambled.append(scrambled[i]);
}
key = sbScrambled.toString();
return key;
}
}

3级

package encryption;

import java.util.Scanner;

public class Message {
Key key = new Key();
Encryption encrypt;
String message;

Message() {
System.out.println("Please enter an input:");
Scanner user_input = new Scanner( System.in);
message = user_input.next();
encrypt = new Encryption();
}

public static void main(String[] args) {

Message message = new Message();
System.out.println(message.key.key);
System.out.println(message.encrypt.alpha);
}

}

Encryption类返回字母表,Key类随机加密字母表然后显示,Message类向用户显示加密后的 key 和字母表。下面是运行它时的示例:

Please enter an input:

wew lad

mbptwuklhanjrsedzqfcyvxogi

abcdefghijklmnopqrstuvwxyz

我试图让代码做的是以加密字母显示用户输入,所以它看起来像这样:

Please enter an input:

wew lad

xwx jmt

mbptwuklhanjrsedzqfcyvxogi

abcdefghijklmnopqrstuvwxyz

最佳答案

回答您的问题:

您需要将 Message() 内部的消息传递到加密类中,然后从那里循环遍历所有字符并替换消息 字符及其在乱序字母表中的等效字符。例如,您可以将字符 A 替换为 scrambled[0]

为此,您需要查看 ASCII Table查看它的数字表示。然后做类似的事情:

public String encryptText(String message) {
message = message.toLowerCase();
String encryptedMessage = "";
for(int i = 0; i < message.length; i++) {
encryptedText += scrambled[message[i] - 'a' + 1];
}
return encryptedMessage;
}
<小时/>

话虽如此,我强烈建议删除您刚刚完成的所有内容。当谈到加密时,除非您真的知道自己在做什么,否则您不应该尝试创建自己的协议(protocol),因为对于任何有能力加密的人来说破解它都是非常容易的。

这是您应该做什么的简单示例,https://stackoverflow.com/a/4487541/1327636

你正在做的是一个替代密码,破解起来并不是很难。破解替换密码的方法是:

  • 计算加密文本中字母的频率并将其与 letter frequency table 进行比较

  • 寻找重复字符,例如。 ZZ

  • 查看单词长度,并将加密字符串字符与频率表进行比较,找到流行单词,例如 The

  • 寻找重复模式,例如 INGTHION

仅使用这四件事就可以为您提供破解替换密码的非常好的统计概率。如果您想了解更多有关它们的信息,我会查看 here.

关于java - 加密用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41066953/

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