
sodium_crypto_generichash 함수는 NaCl 라이브러리의 해시 함수 중 하나로, 키-메시지 해시 함수입니다.
- 키(key): 해시 함수에 사용되는 비밀 키입니다. 이 키는 해시 함수를 사용하는 모든 곳에서 일치해야 합니다. 키의 길이는 32바이트 이상이어야 하며, 키가 짧을수록 해시 함수의 성능이 향상됩니다.
- 메시지(msg): 해시 함수에 입력되는 데이터입니다. 메시지는 문자열, 바이너리 데이터, 또는 Buffer 객체로 입력할 수 있습니다. 메시지의 길이는 2^32바이트 이하이어야 합니다.
해시 함수는 메시지에 대한 키-메시지 해시 값을 생성합니다. 이 해시 값은 메시지와 키의 조합에만 해당되며, 메시지나 키만으로는 해시 값을 재생할 수 없습니다.
예제를 통해 이해를 돕겠습니다.
#hostingforum.kr
javascript
const sodium = require('sodium-native');
const key = Buffer.alloc(32); // 32바이트의 비밀 키를 생성합니다.
sodium.randombytes_buf(key); // 키에 랜덤 바이트를 채웁니다.
const msg = Buffer.from('Hello, World!', 'utf8'); // 메시지를 Buffer 객체로 생성합니다.
const hash = sodium.crypto_generichash(32, key, msg); // 해시 함수를 호출합니다.
console.log(hash.toString('hex')); // 해시 값을 출력합니다.
이 예제에서 `key` 변수는 32바이트의 비밀 키를 생성하고, `msg` 변수는 "Hello, World!"라는 문자열을 Buffer 객체로 생성합니다. `crypto_generichash` 함수는 이 키와 메시지에 대한 해시 값을 생성합니다.
2025-04-30 09:41