创建一个简单的加密程序

时间:2014-01-22 17:56:12

标签: java encryption

我想用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。

3 个答案:

答案 0 :(得分:1)

您可以采取以下步骤来执行此操作。这不是一个确切且有效的解决方案,但它有望帮助您入门。

  1. 首先从控制台读取输入(例如,通过ScannerBufferedReader)。
  2. 或许在空格上拆分您的输入,以便您有String[]个单词。
  3. 循环显示String[]个单词,然后再次循环显示哪个单词。您可以拥有一个在内循环的每次迭代中递增的计数器,并在内循环结束时重置。您可以使用该计数器变量在内部循环的每次迭代中获取键(key[counter%lengthOfKey])的位置。如果(counter%lengthOfKey)%2 == 0,则键具有偶数个案例,否则为奇数个案。在那一点做任何加密(例如简单的替换密码)。

答案 1 :(得分:0)

有许多加密方法,但如果您想了解加密,则应从XOR加密的研究开始。 XOR加密使用密钥并使用密钥对每个字符的二进制代码进行异或。如果密钥长于加密代码,则会创建一个无法解密的一次性密钥。

异或 - 异或 - 与OR不同,两个值不能同时为真。

简单说明:

  1. 假装您要使用密钥“c”加密字符串“hello world”。
  2. 对于字符串中的每个字符,使用键c进行异或。
  3. 假设h的二进制值是1100011,c的二进制值是0010110(这些是组成的,不起作用)然后你对每个相应的二进制值进行异或。

    1100011
    XOR
    0010110
    -------
    1110101
    
  4. 1110101是XORed二进制值。

    1. 然后,您将二进制值转换回字符,然后对加密字符串的每一步执行此操作。
    2. 问题:

      短信不安全。但对于长按键非常强大,并创建了一次性打击垫。

      示例代码:

      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());
        }
}