انسخ رمز الكود كما يلي:
import java.security.Key;
import java.security.SecureRandom;
import java.security.spec.AlgorithmParameterSpec;
استيراد javax.crypto.Cipher؛
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.IvParameterSpec;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
الطبقة العامة ديس
{
السلسلة النهائية العامة الثابتة ALGORITHM_DES = "DES/CBC/PKCS5Padding";
سجل السجل الثابت الخاص = LogFactory.getLog(Des.class);
/**
* خوارزمية DES والتشفير
*
* سلسلة البياناتparam المراد تشفيرها
* @param key Encryption مفتاح خاص، لا يمكن أن يكون الطول أقل من 8 بت
* @return مصفوفة البايت المشفرة، تُستخدم بشكل عام مع تشفير Base64
* @throws استثناء CryptException
*/
ترميز السلسلة الثابتة العامة (مفتاح السلسلة، بيانات السلسلة) يطرح استثناءً
{
إرجاع التشفير (مفتاح، data.getBytes ())؛
}
/**
* خوارزمية DES والتشفير
*
* سلسلة البياناتparam المراد تشفيرها
* @param key Encryption مفتاح خاص، لا يمكن أن يكون الطول أقل من 8 بت
* @return مصفوفة البايت المشفرة، تُستخدم بشكل عام مع تشفير Base64
* @throws استثناء CryptException
*/
ترميز السلسلة الثابتة العامة (مفتاح السلسلة، بيانات البايت []) يطرح استثناءً
{
يحاول
{
DESKeySpec dks = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
// لا يمكن أن يقل طول المفتاح عن 8 بايت
مفتاح SecretKey = keyFactory.generateSecret(dks);
تشفير التشفير = Cipher.getInstance(ALGORITHM_DES);
IvParameterSpec iv = new IvParameterSpec("*********".getBytes());
AlgorithmParameterSpec paramSpec = iv;
cipher.init(Cipher.ENCRYPT_MODE, SecretKey,paramSpec);
بايت[] بايت = cipher.doFinal(data);
إرجاع Base64.encode(bytes);
} قبض (الاستثناء ه)
{
رمي استثناء جديد (ه)؛
}
}
/**
* خوارزمية DES وفك التشفير
*
* سلسلة البياناتparam المراد فك تشفيرها
* @param key Decryption المفتاح الخاص، لا يمكن أن يكون الطول أقل من 8 بت
* @return مصفوفة البايتات التي تم فك تشفيرها
* @throws استثناء الاستثناء
*/
فك تشفير البايت الثابت العام [] (مفتاح السلسلة، بيانات البايت []) يطرح استثناءً
{
يحاول
{
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
// لا يمكن أن يقل طول المفتاح عن 8 بايت
مفتاح SecretKey = keyFactory.generateSecret(dks);
تشفير التشفير = Cipher.getInstance(ALGORITHM_DES);
IvParameterSpec iv = new IvParameterSpec("*********".getBytes());
AlgorithmParameterSpec paramSpec = iv;
cipher.init(Cipher.DECRYPT_MODE, SecretKey,paramSpec);
إرجاع cipher.doFinal(data);
} قبض (الاستثناء ه)
{
// e.printStackTrace();
رمي استثناء جديد (ه)؛
}
}
/**
* احصل على القيمة المشفرة
* @param مفتاح
* @param data
* @يعود
* @throwsException
* @throwsException
*/
قيمة decodeValue للسلسلة الثابتة العامة (مفتاح السلسلة، بيانات السلسلة) تطرح استثناءً
{
بايت [] بيانات؛
قيمة السلسلة = فارغة؛
datas = decode(key, Base64.decode(data));
القيمة = سلسلة جديدة (بيانات)؛
إذا (القيمة. يساوي("")){
رمي استثناء جديد ()؛
}
قيمة الإرجاع؛
}
}