Jeg er ved at lave en klient der bruger HMAC-MD5 authentication ved login...
Man får "secretKey" tilsendt i hexadecimale tal
og det forventes at HMAC-MD5 resultatet bliver retuneret som et hexadecimalt tal
jeg har så fundet noget kode til at genere denne HMAC-MD5 key, men der bruger de en KeyGenerator.
Hvordan bruger jeg den key jeg får når jeg "challenger" serveren i stedet for den key de laver i den her kode?
-------------
try { // Generate a key for the HMAC-MD5 keyed-hashing algorithm; see RFC 2104 // In practice, you would save this key. KeyGenerator keyGen = KeyGenerator.getInstance("HmacMD5"); SecretKey key = keyGen.generateKey();
// Create a MAC object using HMAC-MD5 and initialize with key Mac mac = Mac.getInstance(key.getAlgorithm()); mac.init(key);
String str = "This message will be digested";
// Encode the string into bytes using utf-8 and digest it byte[] utf8 = str.getBytes("UTF8"); byte[] digest = mac.doFinal(utf8);
// If desired, convert the digest into a string String digestB64 = new sun.misc.BASE64Encoder().encode(digest); } catch (InvalidKeyException e) { } catch (NoSuchAlgorithmException e) { } catch (UnsupportedEncodingException e) { }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Har lavet en løsning hvis nogen skulle værre interasseret:
public String MD5Password() { // Convert the password to MD5 hex string MessageDigest encrypt = null; String hexMD5Password = null; try { encrypt = MessageDigest.getInstance("MD5"); hexMD5Password = toHex(encrypt.digest(this.password.getBytes())); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // username and MD5 hex password added String data = this.username.toLowerCase() + hexMD5Password; System.out.println(data);
// create key object SecretKey key = new SecretKeySpec(secretKey.getBytes(), "HmacMD5");
// Create a MAC object using HMAC-MD5 and initialize with key Mac mac = null; try { mac = Mac.getInstance("HmacMD5"); mac.init(key); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (InvalidKeyException e) { e.printStackTrace(); }
// Encode the string into bytes using utf-8 and digest it byte[] utf8 = data.getBytes(); this.MD5Password = toHex(mac.doFinal(utf8));
// If desired, convert the digest into a string // String digestB64 = new sun.misc.BASE64Encoder().encode(digest);
return this.MD5Password; }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.