Created
March 6, 2014 05:56
-
-
Save benwaffle/9383337 to your computer and use it in GitHub Desktop.
Powerschool Crypto for Login
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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