Use a simpler increment seed iterator. (#186)

* Use a simpler increment seed iterator.

* Use more secure seeding.
This commit is contained in:
Gav Wood
2018-05-30 17:40:16 +02:00
committed by Robert Habermeier
parent c831e7c511
commit 66affa2b95
3 changed files with 21 additions and 2 deletions
+1
View File
@@ -1851,6 +1851,7 @@ name = "subkey"
version = "0.1.0"
dependencies = [
"ed25519 0.1.0",
"rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"substrate-primitives 0.1.0",
]
+1
View File
@@ -6,3 +6,4 @@ authors = ["Parity Technologies <admin@parity.io>"]
[dependencies]
ed25519 = { version = "*", path = "../substrate/ed25519" }
substrate-primitives = { version = "*", path = "../substrate/primitives" }
rand = "0.4"
+19 -2
View File
@@ -1,6 +1,8 @@
extern crate ed25519;
extern crate substrate_primitives;
extern crate rand;
use rand::{OsRng, Rng};
use std::env::args;
use ed25519::Pair;
use substrate_primitives::hexdisplay::HexDisplay;
@@ -14,6 +16,16 @@ fn good_waypoint(done: u64) -> u64 {
}
}
fn next_seed(mut seed: [u8; 32]) -> [u8; 32] {
for i in 0..32 {
match seed[i] {
255 => { seed[i] = 0; }
_ => { seed[i] += 1; break; }
}
}
return seed;
}
fn main() {
if args().len() != 2 {
println!("Usage: subkey <search string>");
@@ -32,9 +44,14 @@ fn main() {
};
let top = 30 + (desired.len() * 32);
let mut best = 0;
let mut seed = Pair::generate().public().0;
let mut seed = [0u8; 32];
let mut done = 0;
loop {
// reset to a new random seed at beginning and regularly after for paranoia.
if done % 100000 == 0 {
OsRng::new().unwrap().fill_bytes(&mut seed[..]);
}
let p = Pair::from_seed(&seed);
let ss58 = p.public().to_ss58check();
let s = score(&ss58);
@@ -45,7 +62,7 @@ fn main() {
break;
}
}
seed = p.public().0;
seed = next_seed(seed);
done += 1;
if done % good_waypoint(done) == 0 {