fork(4) download
  1.  
  2.  
  3. import lombok.NonNull;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.apache.commons.codec.digest.DigestUtils;
  6. import org.apache.commons.lang3.StringUtils;
  7. import play.Logger;
  8.  
  9. import java.util.*;
  10.  
  11.  
  12.  
  13. @Slf4j
  14. public class UniwebSignature {
  15. private static final String charset = "UTF8";
  16.  
  17. public static String sign(@NonNull String text) {
  18. return DigestUtils.sha256Hex(text).toLowerCase();
  19. }
  20.  
  21. /**
  22.   * verify signature for the parameters
  23.   */
  24. public static boolean verifySign(Map<String, Object> params, String privateKey) {
  25. List<String> keys = new ArrayList<>(params.keySet());
  26. HashMap<String, Object> verifyMap = new HashMap<>();
  27. Collections.sort(keys);
  28. for (String name : keys) {
  29.  
  30. String val = params.get(name).toString();
  31. if (val == null || val.isEmpty()) {
  32. Logger.warn(String.format("Empty Value detected when createURL. key = %s", name));
  33. verifyMap.put(name, "");
  34. continue;
  35. }
  36. if (!StringUtils.equals(name, "signature") && !StringUtils.equals(name, "sign_type")) {
  37. verifyMap.put(name, val);
  38. //params.put(name, URLDecoder.decode(val, input_charset));
  39. }
  40. }
  41.  
  42. String sign = sign(getContentToSign(verifyMap, privateKey));
  43. String signCode = params.get("signature").toString();
  44. return StringUtils.equals(sign, signCode);
  45. }
  46.  
  47.  
  48. public static String getContentToSign(Map<String, Object> params, String privateKey) {
  49. String prestr = getFirstPart(params);
  50. prestr += "&shared_key=" + privateKey;
  51. return prestr;
  52. }
  53.  
  54. public static String getFirstPart(Map<String, Object> params) {
  55. List<String> keys = new ArrayList<String>(params.keySet());
  56. Collections.sort(keys);
  57.  
  58. String prestr = "";
  59.  
  60. for (int i = 0; i < keys.size(); i++) {
  61. String key = "" + keys.get(i);
  62. String value = "" + params.get(key);
  63.  
  64. if (i == keys.size() - 1) {
  65. prestr = prestr + key + "=" + value;
  66. } else {
  67. prestr = prestr + key + "=" + value + "&";
  68. }
  69. }
  70.  
  71. return prestr;
  72. }
  73.  
  74.  
  75. public static void main(String[] args) {
  76. String privateKey = "<(98c|Tz_([:]Uh/#~N.tY5Xt-$U!N@@Wg0S^qs\"fHPsMv~Xn{#dTgm`@2U_]MzS_bLN;Wq_|rzU>x:";
  77. Map<String, Object> params = new HashMap<>();
  78. params.put("service", "uniweb.spot.cancel");
  79. params.put("company", "6");
  80. params.put("transaction", "000060811880018");
  81. params.put("nonce", "94759888668886k66866j8676866ca5");
  82.  
  83.  
  84. String text = UniwebSignature.getContentToSign(params, privateKey);
  85. String sign = UniwebSignature.sign(text);
  86. System.out.println(sign);
  87.  
  88. }
  89. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:14: error: class UniwebSignature is public, should be declared in a file named UniwebSignature.java
public class UniwebSignature {
       ^
Main.java:3: error: package lombok does not exist
import lombok.NonNull;
             ^
Main.java:4: error: package lombok.extern.slf4j does not exist
import lombok.extern.slf4j.Slf4j;
                          ^
Main.java:5: error: package org.apache.commons.codec.digest does not exist
import org.apache.commons.codec.digest.DigestUtils;
                                      ^
Main.java:6: error: package org.apache.commons.lang3 does not exist
import org.apache.commons.lang3.StringUtils;
                               ^
Main.java:7: error: package play does not exist
import play.Logger;
           ^
Main.java:13: error: cannot find symbol
@Slf4j
 ^
  symbol: class Slf4j
Main.java:17: error: cannot find symbol
    public static String sign(@NonNull String text) {
                               ^
  symbol:   class NonNull
  location: class UniwebSignature
Main.java:18: error: cannot find symbol
        return DigestUtils.sha256Hex(text).toLowerCase();
               ^
  symbol:   variable DigestUtils
  location: class UniwebSignature
Main.java:32: error: cannot find symbol
                Logger.warn(String.format("Empty Value detected when createURL. key = %s", name));
                ^
  symbol:   variable Logger
  location: class UniwebSignature
Main.java:36: error: cannot find symbol
            if (!StringUtils.equals(name, "signature") && !StringUtils.equals(name, "sign_type")) {
                 ^
  symbol:   variable StringUtils
  location: class UniwebSignature
Main.java:36: error: cannot find symbol
            if (!StringUtils.equals(name, "signature") && !StringUtils.equals(name, "sign_type")) {
                                                           ^
  symbol:   variable StringUtils
  location: class UniwebSignature
Main.java:44: error: cannot find symbol
        return StringUtils.equals(sign, signCode);
               ^
  symbol:   variable StringUtils
  location: class UniwebSignature
13 errors
stdout
Standard output is empty