CS计算机代考程序代写 Java algorithm import javax.crypto.Mac;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;
import java.util.Base64;
import java.util.Base64.Encoder;

public class TestBST {

private static final String secret = “pKZFy7TpNKegCvxi8bxXftGRaJ8Y6KrGKpkxHVFM2uLBumzi2MVPW9K6m88jXPRq”;
private static final Encoder encoder = Base64.getEncoder().withoutPadding();

private static Mac mac = null;
private static int numberOfKeys = 100000000;

private static MessageDigest digest = null;

private static void initMac() {

try {
mac = Mac.getInstance(“HmacSHA256”);
mac.init(new SecretKeySpec(secret.getBytes(), “HmacSHA256”));

} catch (NoSuchAlgorithmException e) {
System.err.println(e);
System.exit(-1);
} catch (InvalidKeyException e) {
System.err.println(e);
System.exit(-1);
}

}

private static String getSHA256Encoding(String message) {
return encoder.encodeToString(mac.doFinal(message.getBytes()));
}

private static void initDigest() {

try {
digest = MessageDigest.getInstance(“MD5”);
} catch (NoSuchAlgorithmException e) {
System.err.println(e);
System.exit(-1);
}

}

private static String getMD5Encoding(String message) {

digest.update(message.getBytes());
byte messageDigest[] = digest.digest();
StringBuilder hexString = new StringBuilder();
for (byte b : messageDigest) {
hexString.append(Integer.toHexString(0xFF & b));
}
return hexString.toString();
}

private static BinarySearchTree buildBinarySearchTree() {

System.out.println(“building a tree!”);

BinarySearchTree tree;
tree = new BinarySearchTree();

long t0 = System.currentTimeMillis(), elapsed;

for (int i=0; i tree, String value) {

long t0 = System.currentTimeMillis(), elapsed;

if (tree.contains(value)) {
System.out.println(value + ” was found!”);
} else {
System.out.println(value + ” was not found!”);
}

elapsed = System.currentTimeMillis() – t0;

System.out.println(elapsed + ” ms”);

}

public static void testAdd(BinarySearchTree tree, String value) {

System.out.println(“adding ” + value);

long t0 = System.currentTimeMillis(), elapsed;

tree.add(value);

elapsed = System.currentTimeMillis() – t0;

System.out.println(elapsed + ” ms”);

}

public static void main(String[] args) {

// processing the command line arguments

if (args.length == 1) {
try {
numberOfKeys = Integer.parseInt(args[0]);
} catch (NumberFormatException e) {
; // using default value
}
}

initMac();

if (mac == null) {
System.err.println(“No MAC object!”);
return;
}

initDigest();

if (digest == null) {
System.err.println(“No MD5 object!”);
return;
}

BinarySearchTree tree;
tree = buildBinarySearchTree();

String value = getSHA256Encoding(String.format(“%010d”, numberOfKeys++));

testContains(tree, value);

testAdd(tree, value);

testContains(tree, value);

}

}

// > nohup java -Xmx128g TestBST 1000000000 > TestBST-$$.out &