实现OAUTH提供者Java - 生成消费者密钥和密钥

4
我的应用程序是一个oauth提供者。当我使用预生成的Consumer Key和Secret时,它能正常工作。我想知道在Java中生成Consumer Key和Secret的最佳方法是什么。是否有可以用来完成此操作的库?基本上,我想创建一个应用程序注册页面,其他应用程序可以在其中注册。我计划询问回调URL和应用程序名称等详细信息。我只想根据这些详细信息生成随机的Consumer Key和secret。我打算使用HMACSHA1。任何帮助都将不胜感激。

1
我不知道这是否是一个答案...拿出你最喜欢的书,随意翻到一页,选择一个大约6-8句话的段落,并对该文本块进行哈希。生成的哈希应该足够作为盐值,以便您可以添加其他细节来生成密钥。或者我可能完全错了 :-) - corsiKa
2个回答

2

您需要生成一个20-40个字符长的加密安全随机字符字符串。为此,您需要使用CSRNG。以下是Java实现。

public final class KeyGenerator
{
  private static final String symbols = "abcdefghijklmnopqrstuvwxyzABCDEFGJKLMNPRSTUVWXYZ0123456789-_"; 
  private final Random secureRandomProvider = new SecureRandom();
  private final char[] buffer;

  public KeyGenerator(int length)
  {
    if (length < 1)
      throw new IllegalArgumentException("length < 1: " + length);
    buffer = new char[length];
  }

  public String CreateKey()
  {
    for (int idx = 0; idx < buffer.length; ++idx) 
      buffer[idx] = symbols.charAt(secureRandomProvider.nextInt(symbols.length()));
    return new String(buffer);
  }
}

它必须是真正的随机。由于它们基本上是前门的钥匙,您需要确保拥有钥匙的人无法猜测另一个钥匙将是什么。 - Mark S.
感谢大家的迅速反应。最终我使用了“javax.crypto”包来生成基于应用程序注册时输入的字符串的“HmacSHA1”密钥。 - user1553275

0
感谢大家的快速回复。最终我使用了“javax.crypto”包来基于应用程序注册时输入的字符串生成“HmacSHA1”密钥。

1
你能分享一些代码吗?我想做同样的事情! - Anthony McCormick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接