このリンクを読んでください:
- 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 にも多くの例があります。