3

重複の可能性:
クライアント側の html ファイルを暗号化し、swing アプリケーションで参照する

クライアントがマシンにローカルに保存されているhtmlファイルにアクセスする必要があるswingアプリケーションに取り組んでいますが、クライアントがhtmlファイルに直接アクセスしないようにしたいので、javaを使用してJavaアプリケーションでhtmlファイルのフォルダー全体を暗号化したい暗号化されたフォルダーから html ファイルを復号化するためのハード コードを記述します。もう1つ、暗号化されたファイルがクライアント側で将来マージされるように、暗号化されたフォルダーで更新が可能でなければなりません。

私はここで立ち往生しており、私の問題の手がかりがありません。私の問題の助けをいただければ幸いです。

4

2 に答える 2

2

このリンクを読んでください:

  • Java テクノロジで AES を使用する (ドメインが数字であるため、通常どおりリンクを使用できませんでした):http://192.9.162.55/developer/technicalArticles/Security/AES/AES_v1.html

デフォルトでは、AES 128 ビットまで使用できます。

256 ビット AES キーを使用するには、「Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files」をここからダウンロードしてインストールする必要があります。

以下は、AES を使用して Java で文字列メッセージを暗号化および復号化する簡単な例です。

 import java.security.*;
   import javax.crypto.*;
   import javax.crypto.spec.*;
   import java.io.*;

   /**
   * This program generates a AES key, retrieves its raw bytes, and
   * then reinstantiates a AES key from the key bytes.
   * The reinstantiated key is used to initialize a AES cipher for
   * encryption and decryption.
   */

   public class AES {

     /**
     * Turns array of bytes into string
     *
     * @param buf   Array of bytes to convert to hex string
     * @return  Generated hex string
     */
     public static String asHex (byte buf[]) {
      StringBuffer strbuf = new StringBuffer(buf.length * 2);
      int i;

      for (i = 0; i < buf.length; i++) {
       if (((int) buf[i] & 0xff) < 0x10)
        strbuf.append("0");

       strbuf.append(Long.toString((int) buf[i] & 0xff, 16));
      }

      return strbuf.toString();
     }

     public static void main(String[] args) throws Exception {

       String message="This is just an example";

       // Get the KeyGenerator

       KeyGenerator kgen = KeyGenerator.getInstance("AES");
       kgen.init(128); // 192 and 256 bits may not be available


       // Generate the secret key specs.
       SecretKey skey = kgen.generateKey();
       byte[] raw = skey.getEncoded();

       SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");


       // Instantiate the cipher

       Cipher cipher = Cipher.getInstance("AES");

       cipher.init(Cipher.ENCRYPT_MODE, skeySpec);

       byte[] encrypted =
         cipher.doFinal((args.length == 0 ?
          "This is just an example" : args[0]).getBytes());
       System.out.println("encrypted string: " + asHex(encrypted));

       cipher.init(Cipher.DECRYPT_MODE, skeySpec);
       byte[] original =
         cipher.doFinal(encrypted);
       String originalString = new String(original);
       System.out.println("Original string: " +
         originalString + " " + asHex(original));
     }
   }

上記のコードは、暗号化されたファイルをStringBuffer/byte 配列などに読み込み、暗号化を解除して (メモリ内のみ)、必要な作業を行っStringBufferてから /data/bytes を再暗号化して次の場所に書き込むように変更する必要があります。ファイル。

もう 1 つの優れた暗号化 API は次のとおりです。

Bouncy Castle API にも多くの例があります。

于 2012-11-21T07:25:13.980 に答える
2

-暗号化と復号Cipherにを使用してください。CipherInputStreamCipherOutputStream

-フォルダー内のファイルをループして各ファイルを暗号化し、同様にフォルダー内のファイルをループして復号化できます。

このリンクを参照してください:

http://www.flexiprovider.de/examples/ExampleCrypt.html

于 2012-11-21T07:23:27.740 に答える