Python-添加WSSE身份验证

时间:2019-10-03 10:27:30

标签: java python authentication wsse

我正在尝试在Python 3.x中实现WSSE身份验证。我有几个问题,因为使用了来自Java的代码在Python中进行翻译。例如经历了错误,并一一修复了它们,但是现在我有了401响应代码的签名。可能是因为USername,PasswordDigest或Nonce属性未正确填写。有人可以帮忙吗?

例如,我需要翻译以下代码:

private String getNonce() {
       byte[] nonceBytes = new byte[16];
       new Random().nextBytes(nonceBytes);

       return bytesToHex(nonceBytes);
   }

   private String getPasswordDigest(String nonce, String timestamp) {
       String digest = "";
       try {
           MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
           messageDigest.reset();
           String hashedString = String.format("%s%s%s", nonce, timestamp,
           apiSecretKey);
           messageDigest.update(hashedString.getBytes("UTF-8"));
           String sha1Sum = bytesToHex(messageDigest.digest());

           digest = DatatypeConverter.printBase64Binary(sha1Sum.getBytes("UTF-8"));

           } catch (NoSuchAlgorithmException ex) {
           System.out.println("No SHA-1 algorithm was found!");
       } catch (UnsupportedEncodingException ex) {
           System.out.println("Cannot use UTF-8 encoding.");
       }
       System.out.printf("Digest:%s\n",digest);
       return digest;
   }

   private String bytesToHex(byte[] bytes) {
       char[] hexChars = new char[bytes.length * 2];
       for (int j = 0; j < bytes.length; j++) {
           int v = bytes[j] & 0xFF;
           hexChars[j * 2] = hexArray[v >>> 4];
           hexChars[j * 2 + 1] = hexArray[v & 0x0F];
       }
       return new String(hexChars);
   }

0 个答案:

没有答案