0

私はJavaの初心者のスキルを持っているので、テキストを暗号化する方法を理解できません。はい、ライブラリとAPIがたくさんあることは知っていますが、今回はこれをあらゆる方法で実行したいので、すべてを完全に理解しています。

したがって、私の考えと質問は、文字に値を割り当て、後でそれらを使用する方法(暗号化と復号化)です。たとえば、A = 12; B = 13; C = 14; D =15。したがって、DBACは15131214になります。

これまでのところ、文字を1つ増やすだけのこのプログラムを作成しましたが、異なる値を割り当てる方法がわかりません。

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 に答える