node.js에서 어디에서 있습니까의 sha1 해시를 어떻게 얻을 수 있습니까?
node.js로 Websocket 서버를 만들려고합니다.
서버가 작동하는 것보다 SHA1 해시를 가져와야합니다.
내가해야 할 일은 문서의 섹션 5.2.2 페이지 35에 설명되어 있습니다.
참고 :를 들어 예
"Sec-WebSocket-Key"
클라이언트 핸드 셰이크 의 헤더 값이"dGhlIHNhbXBsZSBub25jZQ=="
이면 서버는"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
문자열을 추가 하여 문자열을 형성합니다"dGhlIHNhbXBsZSBub25jZQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
. 그러면 서버는이 공유의 SHA-1 해시를 가져와 0xb3 0x7a 0x4f 0x2c 0xc0 0x62 0x4f 0x16 0x90 0xf6 0x46 0x06 0xcf 0x38 0x59 0x45 0xb2 0xbe 0xc4 0xea 값을 제공합니다. 이 값은 헤더에"s3pPLMBiTxaQ9kYGzzhZRbK+xOo="
반환되는 값을 제공하기 위해 base64로 인코딩"Sec-WebSocket-Accept"
됩니다.
crypto.createHash()
기능 및 관련 및 기능을 참조하십시오 .hash.update()
hash.digest()
const crypto = require('crypto')
, shasum = crypto.createHash('sha1');
shasum.update('foo');
console.log(shasum.digest('hex'));
// "0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"
필수 : SHA1 is broken , 평균 스타트 업 액셀러레이터 코호트의 AWS 카드 위해과 충돌 할 수 질문에 답하기 : :
var getSHA1ofJSON = function(input){
return crypto.createHash('sha1').update(JSON.stringify(input)).digest('hex')
}
그때 :
getSHA1ofJSON('whatever')
또는
getSHA1ofJSON(['whatever'])
또는
getSHA1ofJSON({'this':'too'})
게시물의 댓글에있는 내 조언을 읽고 강력히 고려하십시오. 그래도 그래도 타당한 이유가 권한 부여 Node.js 용 crpyto 모듈 목록 을 확인하세요 . sha1과 base64를 모두 처리하는 모듈이 있습니다.
문제 방지를위한 팁 (모형 해시) :
NodeJS가 공유의 UTF-8 표현을 해싱하는 것을 경험했습니다. 다른 언어 (예 : Python, PHP 또는 PERL ...)는 바이트를 해싱합니다.
이진 인수를 추가로 사용할 수 있습니다 .
const crypto = require("crypto");
function sha1(data) {
return crypto.createHash("sha1").update(data, "binary").digest("hex");
}
sha1("Your text ;)");
"\ xac", "\ xd1", "\ xb9", "\ xe2", "\ xbb", "\ x93"등으로 시도 할 수 있습니다.
기타 언어 (Python, PHP, ...) :
sha1("\xac") //39527c59247a39d18ad48b9947ea738396a3bc47
Nodejs :
sha1 = crypto.createHash("sha1").update("\xac", "binary").digest("hex") //39527c59247a39d18ad48b9947ea738396a3bc47
//without:
sha1 = crypto.createHash("sha1").update("\xac").digest("hex") //f50eb35d94f1d75480496e54f4b4a472a9148752
참고 URL : https://stackoverflow.com/questions/6984139/how-can-i-get-the-sha1-hash-of-a-string-in-node-js
'IT' 카테고리의 다른 글
첫 번째 마이너스와 마지막 마이너스의 CSS 선택기 (0) | 2020.08.27 |
---|---|
TimeStamp를 Java에서 날짜로 변환하는 방법은 무엇입니까? (0) | 2020.08.27 |
전체 화면 Java의 JFrame (0) | 2020.08.27 |
한 활동의 값을 이전 활동으로 전달하는 방법 (0) | 2020.08.27 |
다른 시간에 다른 변수로 목록을 정렬하는 방법 (0) | 2020.08.27 |