Skip to content

Instantly share code, notes, and snippets.

@benwaffle
Created March 6, 2014 05:56
Show Gist options
  • Select an option

  • Save benwaffle/9383337 to your computer and use it in GitHub Desktop.

Select an option

Save benwaffle/9383337 to your computer and use it in GitHub Desktop.
Powerschool Crypto for Login
public class Crypto {
private static String sStringToHMACMD5(String s, String keyString) {
String sEncodedString = null;
try {
javax.crypto.spec.SecretKeySpec key = new javax.crypto.spec.SecretKeySpec((keyString).getBytes("UTF-8"), "HmacMD5");
javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacMD5");
mac.init(key);
byte[] bytes = mac.doFinal(s.getBytes("ASCII"));
StringBuffer hash = new StringBuffer();
for (byte b : bytes) {
String hex = Integer.toHexString(0xFF & b);
if (hex.length() == 1) {
hash.append('0');
}
hash.append(hex);
}
sEncodedString = hash.toString();
} catch (Exception e) {
e.printStackTrace();
}
return sEncodedString;
}
private static String MD5(String md5) {
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
byte[] array = md.digest(md5.getBytes());
StringBuffer sb = new StringBuffer();
for (byte element : array) {
sb.append(Integer.toHexString((element & 0xFF) | 0x100).substring(1, 3));
}
return sb.toString();
} catch (java.security.NoSuchAlgorithmException e) {}
return null;
}
private static String encodeBase64(String strToEncode) {
try {
return javax.xml.bind.DatatypeConverter.printBase64Binary(strToEncode.getBytes("UTF-8"));
} catch (Exception e) {
return null;
}
}
public static String getPW(String contextData, String password) {
return sStringToHMACMD5(contextData, encodeBase64(MD5(password)));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment