WSSE en android (java)

Publié le par samuel

SensioLabs propose via un Cookbook une authentification wsse pour les API. Dans cette mAi??thode le cryptage du mot de passe est essentiel car il garantie la sAi??curitAi??.

Dans ce cookbook, la mAi??thode de cryptage utilise deux fonctions native de php sha1 et base64 encode. TrA?s simple Ai?? utiliser en php ils le sont beaucoup moins en java.

Je vous propose donc une fonction de gAi??nAi??ration wsse rAi??pondant au cryptage php suivant :

base64_encode(sha1($nonce.$created.$secret));

Il y a http://anithamgroup.com/?p=3537 donc deux passes de cryptage, le sha1 puis le base64 encode.

http://imoas.kbsu.ru/index.php/2018/02/12/buy-essays/

private String encryptWsse()&lt;br /&gt;<br />
{&lt;br /&gt;<br />
    String username =  &amp;quot;my_user&amp;quot;;&lt;br /&gt;<br />
    String password = &amp;quot;my_password&amp;quot;;&lt;br /&gt;<br />
    String digest = &amp;quot;&amp;quot;;&lt;br /&gt;<br />
    String nonce = &amp;quot;&amp;quot;;&lt;br /&gt;<br />
    String createdAt = &amp;quot;&amp;quot;;&lt;/p&gt;<br />
&lt;p&gt;    /** Date */&lt;br /&gt;<br />
    Date date = new Date();&lt;br /&gt;<br />
    TimeZone gmtTZ = TimeZone.getTimeZone(&amp;quot;GMT&amp;quot;);&lt;br /&gt;<br />
    DateFormat dateFormat = new SimpleDateFormat(&amp;quot;yyyy-MM-dd'T'HH:mm:ssz&amp;quot;, Locale.FRENCH);&lt;br /&gt;<br />
    dateFormat.setTimeZone(gmtTZ);&lt;br /&gt;<br />
    createdAt = dateFormat.format(date);&lt;/p&gt;<br />
&lt;p&gt;    try&lt;br /&gt;<br />
    {&lt;br /&gt;<br />
        // Nonce&lt;br /&gt;<br />
        nonce = UUID.randomUUID().toString();&lt;br /&gt;<br />
        // Digest&lt;br /&gt;<br />
        // Passage SHA-1&lt;br /&gt;<br />
        MessageDigest crypt = MessageDigest.getInstance(&amp;quot;SHA-1&amp;quot;);&lt;br /&gt;<br />
        crypt.reset();&lt;br /&gt;<br />
        crypt.update((nonce+createdAt+password).getBytes());&lt;br /&gt;<br />
        // Transformation en Hex&lt;br /&gt;<br />
        digest = byteToHex(crypt.digest());&lt;br /&gt;<br />
        // Passage Base64 encode -  Flag = 2 pour supprimer les \n&lt;br /&gt;<br />
        byte[] tmp = Base64.encode(digest.getBytes(),2);&lt;br /&gt;<br />
        // Transformation final byte[] -&amp;gt; String&lt;br /&gt;<br />
        digest = new String(tmp);&lt;br /&gt;<br />
    }&lt;br /&gt;<br />
    catch(NoSuchAlgorithmException e)&lt;br /&gt;<br />
    {&lt;br /&gt;<br />
        e.printStackTrace();&lt;br /&gt;<br />
    }&lt;/p&gt;<br />
&lt;p&gt;    return digest;&lt;br /&gt;<br />
}&lt;/p&gt;<br />
&lt;p&gt;/**&lt;br /&gt;<br />
* Transformation byte[] to Hexadecimal&lt;br /&gt;<br />
*/&lt;br /&gt;<br />
private static String byteToHex(final byte[] hash)&lt;br /&gt;<br />
{&lt;br /&gt;<br />
    Formatter formatter = new Formatter();&lt;br /&gt;<br />
    for (byte b : hash)&lt;br /&gt;<br />
    {&lt;br /&gt;<br />
        formatter.format(&amp;quot;%02x&amp;quot;, b);&lt;br /&gt;<br />
    }&lt;br /&gt;<br />
    String result = formatter.toString();&lt;br /&gt;<br />
    formatter.close();&lt;br /&gt;<br />
    return result;&lt;br /&gt;<br />
}&lt;br /&gt;<br />

J’espA?re que cette petite fonction vous aidera http://odtrk.if.ua/2018/02/13/best-cannabis-seeds-bank/ dans vos appels API Symfony2.

Cette entrée a été publiée dans Symfony 2 API, Symfony 2 Utils, avec comme mot(s)-clef(s) , , , , . Vous pouvez la mettre en favoris avec ce permalien.



Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*


1 * = five

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>