Java 我想不出解密的逻辑
那么我在解密块中写什么呢?有什么想法吗?我必须制作一个程序,对用户输入的任何内容进行加密,并对其进行解密。这个语法是一个垫脚石,因为稍后我将添加扫描仪和系统输入。我只是想确保在打印语句中使用这些方法时,它们能够正常工作Java 我想不出解密的逻辑,java,arrays,encryption,Java,Arrays,Encryption,那么我在解密块中写什么呢?有什么想法吗?我必须制作一个程序,对用户输入的任何内容进行加密,并对其进行解密。这个语法是一个垫脚石,因为稍后我将添加扫描仪和系统输入。我只是想确保在打印语句中使用这些方法时,它们能够正常工作 public class KeysLocks { public static void main(String[] args) { String message = "super saiyan"; System.out.println(
public class KeysLocks {
public static void main(String[] args) {
String message = "super saiyan";
System.out.println("message: " + message);
String encryption = encrypt(message);
System.out.println("encryption: " + encryption);
String decryption = decrypt(message);
System.out.println("decryption: " + decryption);
}
private static String encrypt(String message) {
String key = "abcdefghijklmnopqrstuwxyz";
String lock = "qwertyuiopasdfghjklzxcvbnm";
String encrypted_sentence = "";
char phrase[] = message.toCharArray();
for(int i = 0; i < phrase.length; i++){
int geasse = key.indexOf(phrase[i]);
encrypted_sentence += lock.charAt(geasse);
}
return encrypted_sentence;
}
private static String decrypt(String message) {
// TODO Auto-generated method stub
return null;
}
}
公共类密钥锁{
公共静态void main(字符串[]args){
字符串消息=“超级赛扬”;
System.out.println(“message:+message”);
字符串加密=加密(消息);
System.out.println(“加密:”+加密);
字符串解密=解密(消息);
System.out.println(“解密:”+解密);
}
私有静态字符串加密(字符串消息){
String key=“abcdefghijklmnopqrstuwxyz”;
String lock=“qwertyuiopasdfghjklzxcvnm”;
字符串加密的_句子=”;
字符短语[]=message.toCharArray();
for(int i=0;i
我将要做出的假设
- 当你说解密,你的意思是加密。(尽管我将展示它们是如何相同的)
- 你对密码术语不太了解
- 你犯了一些错误,所以我会一直改正的
s-box
。这是一个替换框,用另一个字母替换一个字母,用于混淆明文和密文之间的关系。您的s-box
如下所示:
SBOX = {q,w,e,r,t,y...m}
您将输入的文本映射到字符输入,因此要对其进行解密,您需要执行相同的操作,但操作相反
SBOX^-1 = "Something"
现在我们需要解决如何反转映射,让我们从头开始。如果我用你的s-box
加密a
,它会给我一个q
。因此,在解密s-box
中,q
应该映射到a
,最好的方法是将a
放在q
位置。所以我们知道它看起来像:
SBOX^-1 = {null, null, null ..., a, null, null... }
现在让我们转到b。我们加密b
,得到w
。因此,让我们将b
置于w
位置
SBOX^-1 = {null, null, null ..., a, null, null... ,b, null, null}
然后你从那里建立了一幅画面。解密时,您使用相同的密钥
(尽管在此上下文中,我不确定这是一个准确的名称),并且您使用与加密
完全相同的方法,只是使用不同的s-box
,或者在程序中使用锁
关于代码的一般说明
- 问问题时,试着用英语写代码。像
这样的词没有任何意义,也无助于轻松传达代码背后的含义geasse
- 创建
,在循环内部追加是一种效率极低的方法。您应该查看字符串时
类,动态创建StringBuilder
对象String
- 读一读。这将解释您试图传达的概念
- 阅读有关加密的基础知识。当我学习这些想法时,我发现自己是一个很好的资源
- 最后是
类。这是一个非常好的教程,由Oracle自己提供,用来解释如何使用StringBuilder
类,更重要的是,为什么要在附加时使用它StringBuilder