Python添加WSSE身份验证

2024-04-26 08:02:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python3.x中实现WSSE身份验证。我有几个问题,因为使用java代码在Python中进行翻译。例如,我检查了错误并一个接一个地修复了它们,但现在我有401响应代码的签名。这可能是因为用户名、密码摘要或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);
   }

Tags: 代码newstringreturnbytesbyteprivateout