Skip to content
Snippets Groups Projects
Commit 66affa2b authored by Gav Wood's avatar Gav Wood Committed by asynchronous rob
Browse files

Use a simpler increment seed iterator. (#186)

* Use a simpler increment seed iterator.

* Use more secure seeding.
parent c831e7c5
No related merge requests found
......@@ -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",
]
......
......@@ -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"
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 {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment