2017-10-06 8 views
1

그래서 일부 PIN 코드/암호 해시에 대한 단위 테스트를 만들려고합니다. 나는이 에러를 조기에 우연히 만났지만, 간단히 .toString()으로 해결할 수 있었지만, 지금은 효과가없는 것 같습니다. 이것은암호 작성기 TypeError : 첫 번째 인수는 문자열이어야합니다.

방법에 관한 내 코드의 일부 :

pin.model.spec.js :

let pin = Math.floor(1000 + Math.random() * 9000); 
let hash = await Pincode.getHashedPincode(pin.toString(), salt); 

crypto.js 다음 일관성이 약

function getPasswordHash(password, salt) { 
    return new Promise((resolve, reject) => { 
    crypto.pbkdf2(password, new Buffer(salt, 'hex'), iterations, keyLength, 'SHA1', (err, result) => { 
     if (err) { 
     return reject(err); 
     } 
     return resolve(result.toString('hex')); 
    }); 
    }); 
} 

그나마 걱정 메서드 이름 사이에는 getHashedPincode이라는 메서드가 있지만 아무것도 수행하지 않지만 명명 규칙은 getPasswordHash입니다. vars iterationskeyLength은 상수 파일에서 가져온 것입니다. 그래서 그 것도 문제가 아닙니다. 이것은 전체 getHashPincode입니다

:

나는 누군가가 올바른 방향으로

편집에 저를 이끌 수 있기를 바랍니다 pin.toString() 아무 문제가 없습니다

Pincode.getHashedPincode = async (pincode, salt) => { 
    return cryptographer.getPasswordHash(pincode, salt); 
}; 
+1

우리는'getHashedPincode'를 보여줄 수 있습니까? – taha

+0

나는 포스트를 편집했다 – Bas

답변

0

. 당신이 인코딩 (진수)를 첫 번째 인수 (소금가) 문자열이어야를 지정하기 때문에 오류의 원인은 무엇

new Buffer(salt, 'hex')입니다. salt.toString() 트릭을해야합니다

+1

당신은 나의 영웅이다, 나는 그것을 완전히 놓쳤다. 하지만 실제로 작동하는 것 같습니다! – Bas