Research Article

HB+-MHT: Lightweight and Efficient Data Integrity Verification Scheme for Cloud Virtual Machines

Algorithm 1

Generation of HHT.
Input: Fileinfoarray satisfying  = 1
Output: Nodelist
Begin
  For each item f in Fileinfoarray {
  //Initialization, each tree has only one root node
  HHTNode n = new HHTnode ();
  n.h = hash (f.data);
  n.weight = f.weight;
  n.lc = 0; n.rc = 0;
  n.lp = null; n.rp = null;
  Nodelist.equeue (n)
 }
While (NodeList.size! = 1)
   //Select two trees with the smallest AWPL from the queue
   nl, nr ← min (NodeList);
   //Merge the two trees
   HHTNode n = new HHTnode();
   n.h = hash (nl.h || nr.h);
   n.weight = nl.weight + nr.weight;
   n.lc = nl.lc + nl.rc; n.rc = nr.lc + nr.rc;
   n.lp = nl; n.rp = nr;
   //Add a new binary tree to the queue
   Nodelist.equeue (n);
   //Delete the analyzed two subtrees
   Nodelist.deequeue (nl);
   Nodelist.deequeue (n2);
  end while
  return Nodelist
end