728x90
반응형
라이브러리를 사용해서 해시값을 구하면 각각 다른 값이 나오거나 해서 쌩짜로 만들었다. (보고 베꼈다.)
원래 출처에서는 Timestamp를 넣어서 해시값을 구하는데 이렇게 되면 로직이 복잡해져서 그냥 빼버렸다. 상황에 따라서 넣어서 사용하자. 대신 Keystring을 랜덤화해서 사용해도 될 것 같다.
C# 소스
public static string GenerateHMAC(string payload, string key = "keystring")
{
// 키 생성
var hmac_key = Encoding.UTF8.GetBytes(key);
// Timestamp 생성
//var timespan = (timestamp - new DateTime(1970, 1, 1, 0, 0, 0));
//var hmac_timestamp = (long)timespan.TotalMilliseconds;
// HMAC-SHA256 객체 생성
using (HMACSHA256 sha = new HMACSHA256(hmac_key))
{
var bytes = Encoding.UTF8.GetBytes(payload);
string base64 = Convert.ToBase64String(bytes);
var message = Encoding.UTF8.GetBytes(base64);
// 암호화
var hash = sha.ComputeHash(message);
// base64 컨버팅
return Convert.ToBase64String(hash);
}
}
Node.js (TypeScript) 소스
import crypto from 'crypto'
export function GenerateHMAC(payload: string) {
var hmac = crypto.createHmac('sha256', 'keystring'); // key입력대신 넣음.
var message = new Buffer(payload).toString('base64')
hmac.write(message);
hmac.end()
const hash: string = new Buffer(hmac.read()).toString('base64')
return hash;
}
반응형
'개발 > C#' 카테고리의 다른 글
.net6에서 process.start 할 때 오류가 나는 경우 (0) | 2024.02.27 |
---|---|
Enum 사용 시 인덱스가 순차적이지 않을 때 처리방법 (0) | 2024.02.15 |
Datatable을 Listview에 바인딩해서 사용하기 (0) | 2024.02.13 |
Listbox에서 아이템을 위/아래로 이동하는 함수 (0) | 2024.02.06 |
.net6에서 process.start로 다른 프로그램 또는 브라우저 실행 시 오류해결 (0) | 2024.01.08 |