/** Construct a hash value for a byte array. */ public static MD5Hash digest(byte[] data, int start, int len) { byte[] digest; MessageDigest digester = getDigester(); digester.update(data, start, len); digest = digester.digest(); return new MD5Hash(digest); }
/** Constructs, reads and returns an instance. */ public static MD5Hash read(DataInput in) throws IOException { MD5Hash result = new MD5Hash(); result.readFields(in); return result; }
/** Construct a hash value for the content from the InputStream. */ public static MD5Hash digest(InputStream in) throws IOException { final byte[] buffer = new byte[4*1024]; final MessageDigest digester = getDigester(); for(int n; (n = in.read(buffer)) != -1; ) { digester.update(buffer, 0, n); } return new MD5Hash(digester.digest()); }
/** Construct a hash value for an array of byte array. */ public static MD5Hash digest(byte[][] dataArr, int start, int len) { byte[] digest; MessageDigest digester = getDigester(); for (byte[] data : dataArr) { digester.update(data, start, len); } digest = digester.digest(); return new MD5Hash(digest); }
private FileChecksum getPFileChecksum(Path f) throws IOException { MessageDigest md5Digest; try { md5Digest = MessageDigest.getInstance("MD5"); MD5Hash md5Hash = new MD5Hash(getMD5Checksum(fs.open(f))); return new PFileChecksum(md5Hash, md5Digest.getAlgorithm()); } catch (Exception e) { throw new IOException(e); } }
private static MD5Hash parseMD5Header(HttpURLConnection connection) { String header = connection.getHeaderField(MD5_HEADER); return (header != null) ? new MD5Hash(header) : null; }
private static MD5Hash parseMD5Header(HttpServletRequest request) { String header = request.getHeader(Util.MD5_HEADER); return (header != null) ? new MD5Hash(header) : null; }
@Override void commitDigest() throws IOException { if (digester == null) { throw new IOException("Called commitDigest() but digester is null"); } byte[] digest = digester.digest(); md5 = new MD5Hash(digest); md5.write(getChecksumWriter()); } }
/** * Read the md5 checksum stored alongside the given data file. * @param dataFile the file containing data * @return the checksum stored in dataFile.md5 */ public static MD5Hash readStoredMd5ForFile(File dataFile) throws IOException { final File md5File = getDigestFileForFile(dataFile); if (!md5File.exists()) { return null; } final Matcher matcher = readStoredMd5(md5File); String storedHash = matcher.group(1); File referencedFile = new File(matcher.group(2)); // Sanity check: Make sure that the file referenced in the .md5 file at // least has the same name as the file we expect if (!referencedFile.getName().equals(dataFile.getName())) { throw new IOException( "MD5 file at " + md5File + " references file named " + referencedFile.getName() + " but we expected it to reference " + dataFile); } return new MD5Hash(storedHash); }
/** * Read dataFile and compute its MD5 checksum. */ public static MD5Hash computeMd5ForFile(File dataFile) throws IOException { InputStream in = new FileInputStream(dataFile); try { MessageDigest digester = MD5Hash.getDigester(); DigestInputStream dis = new DigestInputStream(in, digester); IOUtils.copyBytes(dis, new IOUtils.NullOutputStream(), 128*1024); return new MD5Hash(digester.digest()); } finally { IOUtils.closeStream(in); } }
private MD5Hash checksumPartialBlock() throws IOException { byte[] buffer = new byte[4 * 1024]; MessageDigest digester = MD5Hash.getDigester(); long remaining = (getRequestLength() / getBytesPerCRC()) * getChecksumSize(); for (int toDigest = 0; remaining > 0; remaining -= toDigest) { toDigest = getChecksumIn().read(buffer, 0, (int) Math.min(remaining, buffer.length)); if (toDigest < 0) { break; } digester.update(buffer, 0, toDigest); } byte[] partialCrc = crcPartialBlock(); if (partialCrc != null) { digester.update(partialCrc); } return new MD5Hash(digester.digest()); }
new MD5Hash(digester.digest()));
MD5Hash computedDigest = new MD5Hash(digester.digest());
savedDigest = new MD5Hash(digester.digest());
imgDigest = new MD5Hash(digester.digest()); loaded = true;
new MD5Hash(checksumData.getBlockChecksum().toByteArray()); md5.write(blockChecksumBuf); LOG.debug("got reply from datanode:{}, md5={}",
saveFileSummary(underlyingOutputStream, summary); underlyingOutputStream.close(); savedDigest = new MD5Hash(digester.digest()); return numErrors;
void loadFSImageFile(FSNamesystem target, MetaRecoveryContext recovery, FSImageFile imageFile, StartupOption startupOption) throws IOException { LOG.info("Planning to load image: " + imageFile); StorageDirectory sdForProperties = imageFile.sd; storage.readProperties(sdForProperties, startupOption); if (NameNodeLayoutVersion.supports( LayoutVersion.Feature.TXID_BASED_LAYOUT, getLayoutVersion())) { // For txid-based layout, we should have a .md5 file // next to the image file boolean isRollingRollback = RollingUpgradeStartupOption.ROLLBACK .matches(startupOption); loadFSImage(imageFile.getFile(), target, recovery, isRollingRollback); } else if (NameNodeLayoutVersion.supports( LayoutVersion.Feature.FSIMAGE_CHECKSUM, getLayoutVersion())) { // In 0.22, we have the checksum stored in the VERSION file. String md5 = storage.getDeprecatedProperty( NNStorage.DEPRECATED_MESSAGE_DIGEST_PROPERTY); if (md5 == null) { throw new InconsistentFSStateException(sdForProperties.getRoot(), "Message digest property " + NNStorage.DEPRECATED_MESSAGE_DIGEST_PROPERTY + " not set for storage directory " + sdForProperties.getRoot()); } loadFSImage(imageFile.getFile(), new MD5Hash(md5), target, recovery, false); } else { // We don't have any record of the md5sum loadFSImage(imageFile.getFile(), null, target, recovery, false); } }
/** Construct a hash value for the content from the InputStream. */ public static MD5Hash digest(InputStream in) throws IOException { final byte[] buffer = new byte[4*1024]; final MessageDigest digester = getDigester(); for(int n; (n = in.read(buffer)) != -1; ) { digester.update(buffer, 0, n); } return new MD5Hash(digester.digest()); }
@Override public void run() { for (int i = 0; i < 100; i++) { MD5Hash hash = new MD5Hash(DFF); assertEquals(hash, md5HashFF); } } };