次のようにコードをコピーします。
java.security.Keyをインポートします。
インポート java.security.SecureRandom;
import java.security.spec.AlgorithmParameterSpec;
javax.crypto.Cipherをインポートします。
javax.crypto.SecretKeyFactoryをインポートします。
インポート javax.crypto.spec.DESKeySpec;
インポート javax.crypto.spec.IvParameterSpec;
org.apache.commons.logging.Log をインポートします。
org.apache.commons.logging.LogFactory をインポートします。
パブリッククラス Des
{
public static Final String ALGORITHM_DES = "DES/CBC/PKCS5Padding";
プライベート静的ログログ = LogFactory.getLog(Des.class);
/**
* DES アルゴリズム、暗号化
*
* @param 暗号化するデータ文字列
* @param key 暗号化秘密キー、長さは 8 ビット未満にすることはできません
* @return 暗号化されたバイト配列。通常は Base64 エンコーディングと組み合わせて使用されます。
* @throws CryptException 例外
*/
public static String encode(String key,String data) が例外をスローする
{
return encode(key, data.getBytes());
}
/**
* DES アルゴリズム、暗号化
*
* @param 暗号化するデータ文字列
* @param key 暗号化秘密キー、長さは 8 ビット未満にすることはできません
* @return 暗号化されたバイト配列。通常は Base64 エンコーディングと組み合わせて使用されます。
* @throws CryptException 例外
*/
public static String encode(String key,byte[] data) が例外をスローする
{
試す
{
DESKeySpec dks = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
//キーの長さは 8 バイト未満にすることはできません
キー SecretKey = keyFactory.generateSecret(dks);
暗号 cipher = Cipher.getInstance(ALGORITHM_DES);
IvParameterSpec iv = 新しい IvParameterSpec("********".getBytes());
AlgorithmParameterSpec paramSpec = iv;
cipher.init(Cipher.ENCRYPT_MODE, SecretKey,paramSpec);
byte[] bytes = cipher.doFinal(data);
Base64.encode(バイト)を返します;
} catch (例外 e)
{
新しい例外をスローします(e);
}
}
/**
* DES アルゴリズム、復号化
*
* @param 復号化するデータ文字列
* @param key 復号化秘密キー、長さは 8 ビット未満にすることはできません
* @return 復号化されたバイト配列
* @throws 例外例外
*/
public static byte[] decode(String key,byte[] data) が例外をスローする
{
試す
{
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
//キーの長さは 8 バイト未満にすることはできません
キー SecretKey = keyFactory.generateSecret(dks);
暗号 cipher = Cipher.getInstance(ALGORITHM_DES);
IvParameterSpec iv = 新しい IvParameterSpec("********".getBytes());
AlgorithmParameterSpec paramSpec = iv;
cipher.init(Cipher.DECRYPT_MODE, SecretKey,paramSpec);
cipher.doFinal(データ)を返します。
} catch (例外 e)
{
// e.printStackTrace();
新しい例外をスローします(e);
}
}
/**
* エンコードされた値を取得する
* @paramキー
* @paramデータ
* @戻る
* @throwsException
* @throwsException
*/
public static String decodeValue(String key,String data) が例外をスローする
{
byte[] データ。
文字列値 = null;
データ = デコード(キー, Base64.デコード(データ));
値 = 新しい文字列(データ);
if (value.equals("")){
新しい例外()をスローします。
}
戻り値;
}
}