NodeJS 암호화와 함께 SHA-256 사용
노드에서 변수를 해시하려고 합니다.JS는 그렇게 생각합니다.
var crypto = require('crypto');
var hash = crypto.createHash('sha256');
var code = 'bacon';
code = hash.update(code);
code = hash.digest(code);
console.log(code);
그러나 console.log는 해시된 버전의 베이컨을 기록하지 않고 SlowBuffer에 대한 몇 가지 정보만 기록하기 때문에 문서를 오해한 것 같습니다.
이것을 하는 올바른 방법은 무엇입니까?
crypto의 base64 다이제스트에는 이상한 점이 있습니다(기본적으로 16진수를 반환하는 것으로 보이기 때문입니다).
Sha256과 비교하여
base64:
const sha256 = require('sha256');
const { createHash } = require('crypto');
Buffer.from(sha256('bacon')).toString('base64'); // OWNjYTA3MD...
createHash('sha256').update('bacon').digest('base64'); // nMoHAzQuJI...
// This works though if you really don't want to install external libs:
Buffer.from(createHash('sha256').update('bacon').digest('hex')).toString('base64'); // OWNjYTA3MD...
16진수:
const sha256 = require('sha256');
const { createHash } = require('crypto');
sha256('bacon'); // 9cca070334...
createHash('sha256').update('bacon').digest('hex'); // 9cca070334...
당신은, 이렇게, 여기서 재설정 토큰을 만들 수 있습니다.토큰), 이 토큰은 16진수 version.in 데이터베이스를 만드는 데 사용되며 16진수 버전을 저장할 수 있습니다.
// Generate token
const resetToken = crypto.randomBytes(20).toString('hex');
// Hash token and set to resetPasswordToken field
this.resetPasswordToken = crypto
.createHash('sha256')
.update(resetToken)
.digest('hex');
console.log(resetToken )
const crypto = require('crypto');
const hash = crypto.createHash('sha256');
hash.on('readable', () => {
const data = hash.read();
if (data) {
console.log(data.toString('hex'));
// Prints:
// 6a2da20943931e9834fc12cfe5bb47bbd9ae43489a30726962b576f4e3993e50
}
});
hash.write('some data to hash');
hash.end();
위의 답변과 유사하지만 여러 쓰기를 수행하는 방법을 보여줍니다. 예를 들어 파일에서 한 줄씩 읽은 다음 각 줄을 별도의 작업으로 해시 계산에 추가하는 경우입니다.
이 예에서는 새 줄을 자르기도 하고 빈 줄 건너뛰기(선택 사항)도 합니다.
const {createHash} = require('crypto');
// lines: array of strings
function computeSHA256(lines) {
const hash = createHash('sha256');
for (let i = 0; i < lines.length; i++) {
const line = lines[i].trim(); // remove leading/trailing whitespace
if (line === '') continue; // skip empty lines
hash.write(line); // write a single line to the buffer
}
return hash.digest('base64'); // returns hash as string
}
이 코드를 사용하여 파일의 생성된 줄이 다른 사용자에 의해 수동으로 편집되지 않도록 합니다.이를 위해, 저는 다음과 같은 줄을 씁니다.sha256:<hash>
sha265-sum을 사용하여 다음 실행 시 해당 라인의 해시가 sha265-sum과 일치하는지 확인합니다.
다른 방법:
const {createHash} = require('node:crypto');
const result = createHash('sha256').update("bacon").digest('hex');
console.log(result);
언급URL : https://stackoverflow.com/questions/27970431/using-sha-256-with-nodejs-crypto
'programing' 카테고리의 다른 글
null을 뷰 루트로 전달하지 않도록 합니다( 부풀린 레이아웃의 루트 요소에서 레이아웃 매개 변수를 확인해야 함). (0) | 2023.08.02 |
---|---|
내용에 셀 너비 맞춤 (0) | 2023.08.02 |
Oracle Text 인덱싱 속도를 높이거나 인덱서가 낮은 로드 시간에만 작동하도록 합니다. (0) | 2023.08.02 |
Python 코드를 PEP8 호환으로 변환하는 도구 (0) | 2023.08.02 |
Div 너비 100% - 고정 픽셀 수 (0) | 2023.08.02 |