【发布时间】:2017-08-11 21:28:59
【问题描述】:
编辑:抱歉发错了,下次我会更好地检查论坛位置。我选择了一个已接受的答案,我认为这认为问题已结束。感谢您提供有用的回复和提示!
原文: 我今天需要升级到新的 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("*****");
}
}
【问题讨论】:
-
如果您的代码完整、有效并且您希望对其进行审核,请将其发布在 Code Review 上。
-
也许在你的代码中查看 codereview.stackexchange.com 的 cmets。我会说,将您自己的加密原语作为第一个项目进行滚动保证是不安全的。例如,您使用的是 Random,而 docs.oracle.com/javase/7/docs/api/java/security/… 中似乎有一个加密强的随机数生成器。可能也不建议为每个循环创建一个新的 Random 对象!您还将种子打印到标准输出,如果有人在您的肩膀上看着,这(如果敏感)可能会很糟糕。 (这是不看你的代码。)
-
也许看看stackoverflow.com/questions/41107/… 有类似的问题。
标签: java random generator seed iota