0

我的 Java 初学者技能,不知道如何加密文本。是的,我确实知道有很多库和 APIS,但这次我想以任何方式这样做,所以我完全理解一切。

所以我的想法和问题是如何为字符分配值并稍后使用它们(加密和解密)。例如 A = 12;B = 13; C = 14; D = 15。所以 DBAC 将是 15131214

到目前为止,我制作的这个程序只是将字符加一,但我不知道如何分配不同的值。

package javaapplication2;

public class JavaApplication2 {
public static void main(String[] args) {
    int b;
    String text = "criptable text";
    char[] textArray = text.toCharArray();

    for(int index=0; index < textArray.length;index++){
        textArray[index]++;

    }

    String done = new String (textArray);
    System.out.println(done);
}
}
4

3 回答 3

1

一个非常简单的方法可能是有一个hashmap键值对,键是字母,值是您要分配的任何数字。

然后在函数中,从数组中获取字符,并通过查找为它分配一个值hashmap

于 2012-10-22T07:04:30.247 回答
1

为了获得不同的值(而不仅仅是增量),您需要一个包含每个字母值信息的字典。

顺便说一句,您正在尝试做一些类似于凯撒密码(http://en.wikipedia.org/wiki/Caesar_cipher)的事情。

于 2012-10-22T07:05:18.940 回答
0

你可能正在寻找这样的东西?

public class TestType {

public static void main(String[] args) {

    /*
     * Create a Map of replacements
     */
    Map<Character, String> keyMap = new HashMap<Character, String>();
    keyMap.put('a', "12");  keyMap.put('b', "13");
    keyMap.put('c', "14");  keyMap.put('d', "15");
    keyMap.put('e', "16");  keyMap.put('f', "17");
    keyMap.put('g', "18");  keyMap.put('h', "19");
    //Add more key-values for all letter support


    String plainText = "abcdefgh";
    StringBuffer encrypted = new StringBuffer();

    for (char ch : plainText.toCharArray()) {
        /* Form the encrypted string */
        encrypted.append(keyMap.get(ch));

    }

    System.out.println("Encrypted: " + encrypted.toString());

}

}

于 2012-10-22T07:35:48.800 回答