انسخ رمز الكود كما يلي:
الطبقة العامة MD5Check {
/**
* يتم استخدام مجموعة سلسلة كلمة المرور الافتراضية لتحويل البايتات إلى أحرف سداسية عشرية، ويستخدم Apache هذه المجموعة الافتراضية للتحقق من صحة الملفات التي تم تنزيلها.
*/
محمي char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a' , 'b', 'c', 'd', 'e', 'f' };
protected messageDigest messagedigest = null;
{
يحاول {
messagedigest = messageDigest.getInstance("MD5");
} قبض على (NoSuchAlgorithmException e) {
printStackTrace();
}
}
سلسلة عامة getFileMD5String (ملف ملف) تطرح IOException {
InputStream fis;
fis = new FileInputStream(file);
بايت[] المخزن المؤقت = بايت جديد[1024];
int numRead = 0;
بينما ((numRead = fis.read(buffer)) > 0) {
messagedigest.update(buffer, 0, numRead);
}
fis. Close();
إرجاع bufferToHex(messagedigest.digest());
}
سلسلة عامة getFileMD5String(InputStream in) تطرح IOException {
بايت[] المخزن المؤقت = بايت جديد[1024];
int numRead = 0;
بينما ((numRead = in.read(buffer)) > 0) {
messagedigest.update(buffer, 0, numRead);
}
in. Close();
إرجاع bufferToHex(messagedigest.digest());
}
سلسلة خاصة bufferToHex(بايت بايت[]) {
إرجاع bufferToHex(bytes, 0, bytes.length);
}
سلسلة خاصة bufferToHex(بايت بايت[], int m, int n) {
StringBuffer stringbuffer = new StringBuffer(2 * n);
كثافة العمليات ك = م + ن؛
لـ (int l = m; l < k; l++) {
appendHexPair(bytes[l], stringbuffer);
}
إرجاع stringbuffer.toString();
}
appendHexPair الخاص باطل (بايت bt، StringBuffer stringbuffer) {
char c0 = hexDigits[(bt & 0xf0) >> 4];// احصل على التحويل الرقمي للبتات الأربعة العليا في البايت
// إنه إزاحة منطقية لليمين، ويتم إزاحة بتات الإشارة معًا إلى اليمين، ولا يوجد فرق بين الرمزين هنا.
char c1 = hexDigits[bt & 0xf]; // احصل على التحويل الرقمي للبتات الأربعة السفلية في البايت
stringbuffer.append(c0);
stringbuffer.append(c1);
}
}