【问题标题】:Implementing OAUTH provider Java - Generating Consumer Key and Secret实现 OAUTH 提供程序 Java - 生成使用者密钥和秘密
【发布时间】:2012-08-19 10:38:55
【问题描述】:

我的应用程序是一个 oauth 提供程序。当我使用预先生成的消费者密钥和秘密时,它工作正常。我想知道在 java 中生成 Consumer Key 和 Secret 的最佳方法是什么。有没有我可以用来执行此操作的库。基本上我想创建一个应用程序注册页面,在其他应用程序中可以注册。我打算询问详细信息,例如回调 URL 和应用程序名称。我只想根据这些细节生成随机的消费者密钥和秘密。我打算使用 HMACSHA1。任何帮助将不胜感激

【问题讨论】:

  • 我不知道这是否是一个答案...拿你最喜欢的书,翻到一个随机页面,选择一段大约 6-8 个句子的段落,然后散列该文本块。生成的哈希应该是足够的盐,您可以添加其他详细信息以从中生成密钥。或者我可能完全不在我的摇滚乐:-)

标签: java oauth


【解决方案1】:

您需要生成一个 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);
  }
}

【讨论】:

  • 它必须是真正随机的。由于它们基本上是前门的钥匙,因此您需要确保持有钥匙的人无法猜出另一把钥匙是什么。
  • 感谢大家的及时回复。我最终使用“javax.crypto”包根据应用注册时输入的输入字符串生成“HmacSHA1”密钥。
【解决方案2】:

感谢大家的及时回复。我最终使用“javax.crypto”包根据应用注册时输入的输入字符串生成“HmacSHA1”密钥。

【讨论】:

  • 喜欢分享一些代码,因为我想做完全相同的事情!
猜你喜欢
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 2011-12-11
  • 2017-08-14
  • 2015-12-05
  • 2015-05-08
相关资源
最近更新 更多