当前位置: 首页 > 知识库问答 >
问题:

需要帮助创建有效的随机数

濮阳鸿祯
2023-03-14

我正在尝试使用使用密码摘要模式的 Web 服务,并且我的 Java 应用程序中有这些功能来生成随机随机数、创建日期和密码摘要。我无法克服身份验证失败错误,并且文档不太清楚他们是否需要 SHA-1 或 MD5,因为它顺便提到了两者。我尝试了MD5而不是SHA-1,我得到了相同的结果。我设法通过 SoapUI 上的测试使请求工作,但我不知道该应用程序如何生成摘要/随机数。任何帮助,不胜感激。

下面是我用来生成随机数和密码摘要的代码:

    private static SOAPMessage createSOAPRequest() throws Exception 
    {
        String password = "FakePassword";

        String nonce = generateNonce(); 
        System.out.println("Nonce = " + nonce);

        DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        dateFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
        Date today = Calendar.getInstance().getTime();
        String created = dateFormatter.format(today);
        System.out.println("Created = " + created);

        String passwordDigest = buildPasswordDigest(nonce, created, password);
        System.out.println("Password Digest = " + passwordDigest);
    }

    private static String buildPasswordDigest(String nonce, String created, String password) throws NoSuchAlgorithmException, UnsupportedEncodingException
    {
        MessageDigest sha1;
        String passwordDigest = null;

        try
        {
            sha1 = MessageDigest.getInstance("SHA-1");
            sha1.update(Base64.decodeBase64(nonce));
            sha1.update(created.getBytes("UTF-8"));
            passwordDigest = new String(Base64.encodeBase64(sha1.digest(password.getBytes("UTF-8"))));
            sha1.reset();
        }
        catch (NoSuchAlgorithmException e) 
        {
            e.printStackTrace();
        }

        return passwordDigest;
    }

    private static String generateNonce() throws NoSuchAlgorithmException, NoSuchProviderException, UnsupportedEncodingException
    {
        String dateTimeString = Long.toString(new Date().getTime());
        byte[] nonceByte = dateTimeString.getBytes();
        return Base64.encodeBase64String(nonceByte);
    }

共有1个答案

艾俊晖
2023-03-14

解决方案是替换行sha1.update(nonce.get字节("UTF-8"));sha1.update(Base64.decodeBase64(n文中));

 类似资料:
  • 问题内容: 我正在使用Glassfish和JSF构建我的第一个Java EE Web应用程序。我对条件查询还很陌生,我有一个需要执行的查询,但是javaee6教程的示例似乎有些稀疏。无论如何,我很难创建查询。 目标:我想让公司存储最多的文件。公司与Documents有OneToMany关系。文档与多个表具有ManyToOne关系,“用户类型”列将它们区分开。 MySQL查询: 谢谢 --updat

  • 在中创建android模块需要一点帮助

  • 问题内容: 我正在尝试构建我的第一个Boost.Python示例。 编辑:正如@cdhowie所指出的,Python开发标头丢失了。我已经找到并包含了必需的头文件。现在链接器在抱怨: 我已经链接到-lpython3.3m -lboost_python-mt -lpython3.3-还有什么丢失的? 编辑:我想我已经链接到python3.3-config列出的所有内容。由于缺少符号,链接仍然不起作用

  • 这是主平衡分区 我正尝试通过以这种方式添加这两个分区来更新

  • 首先,我是C、C++、C#、Android和Swift的开发人员,但我绝对没有JavaScript、PHP或Web开发经验。 即只接受整数值的输入。 这是刀片代码:

  • 问题内容: 好吧,我可能也已在较早之前发布了此内容,但到目前为止仍找不到答案,因此请帮助我解决这个问题。 我的数据库结构: ATT (表) Act_ID(PK) Assigned_To_ID(FK,请参阅) Project_ID(FK,请参阅) Product_ID(FK,请参阅) 状态(可以是) 产品表 产品编号(PK) 产品名称 项目表 Project_ID(PK) 项目名 员工表 Emp_I