programing

NodeJS 암호화와 함께 SHA-256 사용

newstyles 2023. 8. 2. 08:53

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 )

nodejs (8) ref

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