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