Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Criptare MAC in SHA-1

  1. #1
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839

    Criptare MAC in SHA-1

    Buongiorno a tutti!!!

    Sto cercando di creare un plugin di Nopcommerce per implementare un pagamento con KeyClient.

    Io provo con il codice seguente a creare il MAC codificato in SHA-1, ma la pagina della banca mi riporta sempre "ERRORE CALCOLO MAC" senza altre spiegazioni. Qualcuno mi sa spiegare dove sbaglio?


    //----- calcolo mac ----------
    string SHA = string.Format("{0}{1}{2}{3}{4}",
    codTrans,
    divisa,
    importo,
    chiave);

    string SHAX = "codTrans=" + codTrans + "divisa=" + divisa + "importo=" + importo + "esempiodicalcolomac";

    byte[] SHAresult;
    SHA1 shaM = new SHA1Managed();
    SHAresult = shaM.ComputeHash(Encoding.Default.GetBytes(SHA));
    string SHAresultStr = BitConverter.ToString(SHAresult).Replace("-", "");

    //----- /calcolo mac ---------



    //------- Creo il POST ------------
    var remotePostHelper = new RemotePost();
    remotePostHelper.FormName = "form1";
    //remotePostHelper.Url = GetBpmUrl();
    remotePostHelper.Add("codTrans", codTrans);
    remotePostHelper.Add("divisa", divisa);
    remotePostHelper.Add("importo", importo);
    //remotePostHelper.Add("url", url);
    // remotePostHelper.Add("alias", alias);


    remotePostHelper.Add("mac", SHAresultStr);

    //remotePostHelper.Add("Ds_Merchant_TransactionType" , strDs_Merchant_TransactionType);
    //remotePostHelper.Add("Ds_Merchant_UrlKO", strDs_Merchant_UrlKO);

    remotePostHelper.Post();
    }
    //------------- /creo il POST --------------



    ==> Le linee guida della banca sono le seguenti:

    Il mac sarà calcolato nel seguente modo:
    mac= HASH SHA(codTrans=<valore codTrans>divisa=<valore
    divisa>importo=<valore importo><chiave segreta”)

    Un esempio di tale stringa potrebbe essere:
    “codTrans=testCILME534divisa=EURimporto=1esempiodi calcolomac”

    allora il campo mac sarà:
    mac= HASH
    SHA(“codTrans=testCILME534divisa=EURimporto=1esemp iodicalcolomac”)

    Il valore ottenuto sarà:
    "992e40c00b79ad1a6e4a5a8c61e776e696796a79"
    Sicut Nox Silentes

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    con questa ti ricavi l'hash dai quattro parametri

    codice:
    protected static string Hash(string ct, string di, string im, string key)
            {
                string mex = string.Format("codTrans={0}divisa={1}importo={2}{3}", ct, di, im, key);
    
                byte[] mexBytes = Encoding.UTF8.GetBytes(mex);
    
                using (HashAlgorithm algorithm = new SHA1Managed())
                {
                    mexBytes = algorithm.ComputeHash(mexBytes);
                }
    
                StringBuilder result = new StringBuilder();
                foreach (byte b in mexBytes)
                    result.AppendFormat("{0:x2}", b);
    
                return result.ToString();
            }
    la chiami cosi:
    codice:
    var hash = Hash("testCILME534", "EUR", "1", "esempiodicalcolomac");
    inserendo i dati di esempio l'hash è quello riportato dalle linee guida.

  3. #3
    Utente di HTML.it L'avatar di Freedom
    Registrato dal
    Jan 2003
    Messaggi
    839
    Davvero GRAZIE rsdpzed!

    Funziona alla perfezione....

    Sicut Nox Silentes

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.