-1

String を (人間にとって) 判読できないものに変更し、再び判読できるようにするために、できるだけ短くて高速なコードが必要です。すべて Java で行う必要があります。

このようなもの:

encrypt("test");

次のような結果になります。

ôT¿ÄÜTV CÁˆ“5="ËÂÀœššbÀß{¡ä³

decrypt("ôT¿ÄÜTV CÁˆ“5 1="ËÂÀœššbÀß{¡ä³");

再びオリジナルになります

test

私はどの方向に進むべきですか、私のためにこれを行うことができるクラスはありますか? Base68Encryption などと呼ばれるものではなく、インターネット経由で安全に送信できる真の読み取り不可能なテキストを意味します。

4

3 に答える 3

1

コード例http://www.code2learn.com/2011/06/encryption-and-decryption-of-data-using.htmlを使用して、データ アルゴリズムの暗号化と復号化を参照してください。暗号化・記述はJREに埋め込まれており、使い方は難しくありません。

于 2013-04-26T14:16:12.430 に答える
1

これは、真の暗号化を使用した非常に短い例です。これは 128 ビットの AES であり、非常に安全です。

ランダムなキーを生成するため、実行ごとに異なります。何らかの方法でデータを交換する 2 つのプログラム間でキーを共有する必要があります。

private static final String ENCRYPTION_ALGORITHM = "AES/ECB/PKCS5Padding";
private static final SecureRandom RANDOM = new SecureRandom();

public static void main(String[] args) throws UnsupportedEncodingException, GeneralSecurityException {
    final KeyGenerator keyGen = KeyGenerator.getInstance(ENCRYPTION_ALGORITHM.substring(0, ENCRYPTION_ALGORITHM.indexOf('/')));
    keyGen.init(128, RANDOM);
    final SecretKey key = keyGen.generateKey();
    final String s = "My topsecret string";
    System.out.println(s);
    final Cipher encryption = getCipher(key, Cipher.ENCRYPT_MODE);
    final String enc = DatatypeConverter.printBase64Binary(encryption.doFinal(s.getBytes("UTF-8")));
    System.out.println(enc);
    final Cipher decryption = getCipher(key, Cipher.DECRYPT_MODE);
    final String dec = new String(decryption.doFinal(DatatypeConverter.parseBase64Binary(enc)), "UTF-8");
    System.out.println(dec);
}

private static Cipher getCipher(final Key key, final int mode) throws GeneralSecurityException {
    final Cipher cipher = Cipher.getInstance(ENCRYPTION_ALGORITHM);
    cipher.init(mode, key, RANDOM);
    return cipher;
}

出力:

My topsecret string
ip4La5KUBJGTTYenoE920V5w0VBHwALv4fp3qyLTY9o=
My topsecret string
于 2013-04-26T14:17:23.653 に答える
0

私はどの方向に進むべきですか、私のためにこれを行うことができるクラスはありますか? Base68Encryption などと呼ばれるものではなく、インターネット経由で安全に送信できる真の読み取り不可能なテキストを意味します。

これに対処するには、次の 2 つの方法があります。

  • 典型的な JVM に標準で実装されている既存の高品質の暗号化システムの 1 つを選択できます。それで:

    1. 文字列をバイトとしてエンコードします。たとえば、UTF-8 を使用します。

    2. 合意された暗号化システムと以前に合意されたキーを使用してバイトを暗号化します。

    3. base_64 または同等のものを使用してバイトをエンコードします。

    そしてもう一方の端で:

    1. base_64 をデコードする

    2. 同じシステムとキーでバイトを復号化します。

    3. UTF-8 をデコードして文字列を取得します。

  • SSL/TLS を使用して TCP/IP 接続を保護し、接続を介して文字列をそのまま送信します。

これらのオプションはどちらも特に高速ではありません。ただし、独自のより高速な暗号化システムを発明しようとする誘惑に駆られないでください。「自家製」の暗号化システムは、あなたが思っているよりもはるかに簡単に解読できる可能性があります。

于 2013-04-26T14:48:28.063 に答える