2017-12-30 9 views
0

내 암호 화 지갑을 복구하기 위해 24 단어로 BIP39 암호 문구가 있습니다. 유감스럽게도 암호는 유효하지 않습니다 (마지막 단어는 체크섬입니다). 암호문의 모든 단어는 사용 가능한 BIP39 단어 목록에 있으므로 첫 번째 추측은 구/배열에서 두 개의 인접 단어 순서를 섞어 놓은 것입니다.어레이를 반복하고 이웃을 교환하십시오

배열의 각 단어를 반복하고 인접 단어로 바꾸고 함수 check(phrase)을 실행하고 교체를 취소하고 다음 단어로 이동하십시오.

예 :

initialPhrase = 'wordOne wordTwo wordThree' 
firstAttempt = 'wordTwo wordOne wordThree' 
secondAttempt = 'wordOne wordThree wordTwo' 

어떻게 내가 배열에있는 모든 단어가 있다고 가정 JS를 사용하여이를 코딩 할 수 있습니다?

답변

1

당신은 다음과 같은 코드를 사용할 수 있습니다

VAR 단어 = initialPhrase.split를 (''); 위한

VAR (I = 0; I < words.length - 1; I ++) {

즉 [I] = words.splice (I + 1, 1, 즉 [I]) [0 ];

var testPhrase = words.join (''); // 귀하가 원하는 구문을 입력하십시오.

words = initialPhrase.split ('');

}

1

포함하여 실행 취소 :

function check(phrase) { 
 
    //custom validator code 
 
    var phraseStr = phrase.join(' '); 
 
    console.log(phraseStr); 
 
    if (phraseStr == 'wordOne wordTwo wordFour wordThree') { 
 
    console.log('valid!'); 
 
    return true; 
 
    } 
 
    return false; 
 
} 
 

 
function getValidPhrase(phrase) { 
 
    for (i=1;i<phrase.length;i++) { 
 
    //swap 
 
    phrase[i] = phrase.splice(i-1, 1, phrase[i])[0]; 
 

 
    if (check(phrase)) { 
 
     return phrase; 
 
    } 
 
    //undo swap 
 
    phrase[i] = phrase.splice(i-1, 1, phrase[i])[0]; 
 
    } 
 
    return null; 
 
} 
 

 
var pp = getValidPhrase(['wordOne', 'wordTwo', 'wordThree', 'wordFour']);

관련 문제