-7
编辑:对不起,我错了帖子,我会检查一下论坛位置更好的下一次。我选择了一个被接受的答案,我认为这个问题是关闭的。感谢您的有益回复和提示!随机种子生成
原文: 今天我需要升级到新的IOTA钱包。它没有随机种子生成器,所以我构建了自己的并从NetBeans运行它。你能给我你的意见吗?它必须是81个字符长,并包含从A到Z和数字9.没有别的。这是整个代码。
这是否留下什么不安全的?从惯例的角度来看,代码是否更清晰?
class SeedGenerator {
/*
This is a program to randomize a seed for Iota wallet
*/
public static void main(String[] args) {
System.out.println("*****");
int seedLength = 81;
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ9"; //Only characters allowed in Iota seed are A-Z and number 9
char[] charArray = alphabet.toCharArray(); //Turn string into array of characters to be referenced by index
String[] seed = new String[seedLength];
System.out.print("Random wallet seed is: ");
for (int i = 0; i < seedLength; i++) {
Random newRandomNumber = new Random();
int seedIndex = newRandomNumber.nextInt(alphabet.length()); //This is an array of index numbers to pull from charArray
// System.out.print(seedIndex + " "); //Used for testing the random character index range
seed[i] += charArray[seedIndex];
System.out.print(charArray[seedIndex] + "");
}
System.out.println();
System.out.println("*****");
}
}
如果你的代码是完整的,可行,你希望它审查,发布在代码审查来代替。 – Carcigenicate
也许你可以查看https://codereview.stackexchange.com/来查看你的代码。我会说,把你自己的密码原语作为第一个项目保证是不安全的。例如,您使用的是随机,而在https://docs.oracle.com/javase/7/docs/api/java/security/SecureRandom.html中似乎存在一个加密性强的随机数生成器。为每个循环创建一个新的Random对象可能也不可取!您还会将种子打印到标准输出,如果有人正在俯视您的肩膀,该标志(如果敏感)可能会很糟糕。 (这是没有看你的代码。) –
也许看类似的问题在https://stackoverflow.com/questions/41107/how-to-generate-a-random-alpha-numeric-string?rq=1。 –