我想用java来制作各种密码,但我不知道如何去做。
基本上,我希望机器接受一串文字,比如“Abcd”
然后是一把钥匙,比如'4532'
如果匹配字母位置的数字是偶数,程序应该在字母表中向前移动字符,如果是奇数则向后移动字符。
如果没有数字,则键应该循环,直到字符串中的字符不能更改。
然后程序将打印密钥。理想情况下,如果正确地对此进行伪编码,则解密字符串将是仅适用于密钥的反向过程。我猜我会使用数组和if / else语句的组合。
我不知道从哪里开始。
示例&编辑字符串:'hello'键:'12'
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
因为相应的键值为1,h将向后移动那么多空格。
h = g
因为e有2,所以它会向前移动很多空格。
e = g
第一个l然后变成k,而第二个变成n。密钥重复,因为字符串没有数字可供比较。 o变为n,因为它与1匹配。
你好,用钥匙42成为ggknn。
答案 0 :(得分:1)
您可以采取以下步骤来执行此操作。这不是一个确切且有效的解决方案,但它有望帮助您入门。
Scanner
或BufferedReader
)。String[]
个单词。String[]
个单词,然后再次循环显示哪个单词。您可以拥有一个在内循环的每次迭代中递增的计数器,并在内循环结束时重置。您可以使用该计数器变量在内部循环的每次迭代中获取键(key[counter%lengthOfKey]
)的位置。如果(counter%lengthOfKey)%2 == 0
,则键具有偶数个案例,否则为奇数个案。在那一点做任何加密(例如简单的替换密码)。答案 1 :(得分:0)
有许多加密方法,但如果您想了解加密,则应从XOR加密的研究开始。 XOR加密使用密钥并使用密钥对每个字符的二进制代码进行异或。如果密钥长于加密代码,则会创建一个无法解密的一次性密钥。
异或 - 异或 - 与OR不同,两个值不能同时为真。
简单说明:
假设h的二进制值是1100011,c的二进制值是0010110(这些是组成的,不起作用)然后你对每个相应的二进制值进行异或。
1100011
XOR
0010110
-------
1110101
1110101是XORed二进制值。
问题:
短信不安全。但对于长按键非常强大,并创建了一次性打击垫。
示例代码:
http://www.ecestudents.ul.ie/Course_Pages/Btech_ITT/Modules/ET4263/More%20Samples/CEncrypt.java.html
答案 2 :(得分:0)
在下面找到加密类
public class App
{
public static void main(String arg[])
{
String keys = "12";
String codes = "hello";
StringBuilder result = new StringBuilder();
char[] codeList = codes.toCharArray();
char[] keyList = keys.toCharArray();
int maxCount = keys.length();
System.out.println("The length is "+maxCount);
int i = 0;
for (Character code : codeList) {
int key = Character.getNumericValue(keyList[i]);
if(key % 2 == 0)
{
int res = code+key;
result.append((char)res);
}
else
{
int res = code-key;
result.append((char)res);
}
i++;
if(i==maxCount)
{
i = 0;
}
}
System.out.println("The result is "+result.toString());
}
}