मैं निम्नलिखित कोड का उपयोग करके सफलतापूर्वक HMAC SHA256 प्राप्त करने में सक्षम हूं:

 public static String getHac(String dataUno,  String keyUno) throws InvalidKeyException, NoSuchAlgorithmException, UnsupportedEncodingException {

         SecretKey secretKey = null;    
         Mac mac = Mac.getInstance("HMACSHA256");

         byte[] keyBytes = keyUno.getBytes("UTF-8");     

         secretKey = new SecretKeySpec(keyBytes,mac.getAlgorithm());

         mac.init(secretKey);   

         byte[] text = dataUno.getBytes("UTF-8");

         System.out.println("Hex encode: " + Hex.encode(keyUno.getBytes()));

         byte[] encodedText = mac.doFinal(text);    
         return new String(Base64.encode(encodedText)).trim();

    }

कौन सी पैदावार:

एचएमएसी: 9rH0svSCPHdbc6qUhco+nlkt2O7HE0rThV4M9Hbv5aY=

हालांकि, मैं इसे प्राप्त करना चाहता हूं:

HMAC:eVXBY4RZmFQcOHHZ5FMRjDLOJ8vCuVGTjy7cHN7pqfo=

मैंने एक ऑनलाइन टूल आज़माया और ऐसा प्रतीत होता है कि मेरे कोड और ऑनलाइन टूल यह है कि मैं कुंजी प्रकार में टेक्स्ट के साथ काम कर रहा हूं।

परीक्षण मान:

स्ट्रिंग डेटा = "5515071604000fAIkwJtkeiA:APA91bH_Pb5xB2lrmKWUst5xRuJ3joVE-sb9KoT0zXZuupIEfdHjii-cODj-JMnjyy7hFJUbIRAre9o2yaCU43KaFDw36

स्ट्रिंग कुंजी = "fc67bb2ee0648a72317dcc42f232fc24f3964a9ebac0dfab6cf47521e121dc6e";

GetHac ( "5515071604000fAIkwJtkeiA: APA91bH_Pb5xB2lrmKWUst5xRuJ3joVE-sb9KoT0zXZuupIEfdHjii-cODj-JMnjyy7hFJUbIRAre9o2yaCU43KaFDmxKlhJhE36Dw0bZ2VntDUn_Zd1EJBuSyCYiUtmmkHfRvRy3hIb", "fc67bb2ee0648a72317dcc42f232fc24f3964a9ebac0dfab6cf47521e121dc6e"));

मेरी विधि वापसी का निष्पादन

9rH0svSCPHdbc6qUhco+nlkt2O7HE0rThV4M9Hbv5aY= (ऑनलाइन कुंजी प्रकार के टेक्स्ट के साथ वही मान लौटाता है)

और मुझे उम्मीद थी

EVXBY4RZmFQcOHHZ5FMRjDLOJ8vCuVGTjy7cHN7pqfo= (ऑनलाइन कुंजी प्रकार हेक्स के साथ समान मान लौटाता है)

0
Luis Eduardo Garcia Albarran 4 जिंदा 2019, 01:57

1 उत्तर

सबसे बढ़िया उत्तर

यह मानते हुए कि आप अपाचे कॉमन्स कोडेक 1.11 का उपयोग कर रहे हैं, निम्नलिखित का उपयोग करें:

byte[] keyBytes = Hex.decodeHex(keyUno);

गेटहैक विधि

आप कोड को थोड़ा संशोधित करते हुए इस तरह दिखते हैं:

public static String getHac(String dataUno,  String keyUno) 
        throws InvalidKeyException, NoSuchAlgorithmException, UnsupportedEncodingException, DecoderException {

    SecretKey secretKey;
    Mac mac = Mac.getInstance("HMACSHA256");

    byte[] keyBytes = Hex.decodeHex(keyUno);

    secretKey = new SecretKeySpec(keyBytes, mac.getAlgorithm());

    mac.init(secretKey);

    byte[] text = dataUno.getBytes("UTF-8");

    byte[] encodedText = mac.doFinal(text);
    return new String(Base64.encodeBase64(encodedText)).trim();
}

परीक्षण

यह जावा विधि तब अपेक्षित परिणाम देती है:

eVXBY4RZmFQcOHHZ5FMRjDLOJ8vCuVGTjy7cHN7pqfo=
3
Stephan Schlecht 4 जिंदा 2019, 10:38