2017-11-03 6 views
0

Ich rufe eine api serice, die mit dem Hash-Wert des Anforderungs Körper einen HTTP-Header erfordert.JMeter Beanshell SHA-256 verschiedene Hash-Werte

Ich versuche, einen Beanshell Postprozessor in JMeter zu verwenden, um automatisch die sha-256 Hash-Wert des Anforderungstext zu erstellen. Der Hash-Wert ist bis ich einen Zeilenumbruch in der Anfrage Körper einführen (was ein Schmerz ist, da die JSON-Nachricht mehrere Zeilen umfasst!)

Ich nehme an, es ist etwas mit versteckten Zeichen zu tun, aber ich kann nicht trainieren was läuft falsch! :(

Wenn ich den Hash erzeugt durch JMeter Vergleich zu Hash-Generator Tools zu trennen ist es eine exakte Übereinstimmung, bis es Zeilenumbrüche sind, dann ist JMeter falsch.

Warum erzeugt JMeter einen falschen Hash, wenn line Pausen

Mein Code ist:?

[import org.apache.commons.httpclient.auth.DigestScheme; // necessary imports 
import org.apache.commons.codec.binary.Base64; 
import org.apache.commons.codec.digest.DigestUtils; 
import org.apache.jmeter.protocol.http.control.Header; 
import org.apache.jmeter.services.FileServer; 
import javax.xml.bind.DatatypeConverter; 
import java.security.*; 

String body = sampler.getArguments().getArgument(0).getValue(); 
String hash = DigestUtils.sha256Hex(body); 
log.info(hash); 
+0

nicht‘wirklich bekommen, was Sie wollen wissen ... – ivoruJavaBoy

+0

Warum generieren Sie Zeilenumbrüche in meiner Anfrage Körper ein falschen sha 256 Hash? – David

+0

Zeilenumbrüche in Windows und Linux sind unterschiedlich. Können Sie mehr Details angeben? – user7294900

Antwort

0

Was ist Ihre Dateneingabe und welche Ausgabe erwarten Sie

Si nce JMeter 3.1it is recommended to switch to JSR223 Test Elements and Groovy language so:

  1. folgende Anfrage Körper Gegeben:

    { 
        "foo": "bar" 
    } 
    
  2. Und der nächste Groovy-Code ein SHA-256 Hex-String zu erzeugen:

    def sha256Hex = { input -> 
        java.security.MessageDigest.getInstance("SHA-256") 
        .digest(input.getBytes("UTF-8")).encodeHex().toString() 
    } 
    log.info(sha256Hex(sampler.getArguments().getArgument(0).getValue())) 
    

Ich bekomme dbc67f71c921b5b7649481a5123d94dfa919748d2962889681d96438033c548f Wert, der im Grunde der gleiche ist, den ich mit 012 sehen kannGenerator.

+0

Danke, ich habe geändert, um Groovy zu verwenden und bekomme die gleichen Hashes wie du. Das Online-Tool, mit dem ich meinen Hashwert verglichen habe, war: https://www.tools4noobs.com/online_tools/hash/, dies erzeugt jedoch einen anderen Hash als das Tool, mit dem Sie verlinkt sind. Irgendeine Idee warum? – David

+0

ich versuchte, zwei verschiedene Hash-Generatoren [http://www.xorbin.com/tools/sha256-hash-calculator](http://www.xorbin.com/tools/sha256-hash-calculator) und [http://passwordsgenerator.net/sha256-hash-generator/](http://passwordsgenerator.net/sha256-hash-generator/) und beide haben die gleiche unterschiedliche Antwort für den Beispiel-Anfragekörper ....? –

Verwandte Themen