Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB 컬렉션에 MD5 해시 값 추가하는 방법

MongoDB에서 문서의 특정 필드 값을 기반으로 MD5 해시 값을 저장해야 하는 경우가 있습니다. 이때 hex_md5() 함수를 활용하면 간단하게 처리할 수 있습니다. 이 글에서는 실제 예제를 통해 MongoDB 컬렉션에 MD5 해시 값을 추가하는 전체 과정을 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성

먼저 테스트용 컬렉션을 만들고 문서를 삽입합니다. 사용자 이름과 비밀번호를 담은 두 개의 문서를 준비했습니다.

> db.addMd5HashValueDemo.insertOne({"UserName":"Adam","UserPassword":"Adam123456"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd6a4c66d78f205348bc619")
}
> db.addMd5HashValueDemo.insertOne({"UserName":"Chris","UserPassword":"Chris_121#"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cd6a4e46d78f205348bc61a")
}

2. 삽입된 문서 확인하기

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.

> db.addMd5HashValueDemo.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5cd6a4c66d78f205348bc619"), "UserName" : "Adam", "UserPassword" : "Adam123456" }
{ "_id" : ObjectId("5cd6a4e46d78f205348bc61a"), "UserName" : "Chris", "UserPassword" : "Chris_121#" }

3. hex_md5()로 MD5 해시 값 추가하기

이제 forEach()와 함께 hex_md5() 함수를 사용하여 각 문서의 비밀번호 필드를 MD5로 변환한 후, 새로운 필드에 저장합니다. save() 메서드를 호출하면 변경된 내용이 원본 문서에 반영됩니다.

> db.addMd5HashValueDemo.find().forEach( function(documentPass){
   documentPass.Value = hex_md5(documentPass.UserPassword);
   db.addMd5HashValueDemo.save(documentPass);
});

4. 최종 결과 확인

작업이 완료되었으므로 다시 한번 컬렉션을 조회하여 결과를 확인해 보겠습니다.

> db.addMd5HashValueDemo.find();

실행 결과는 다음과 같습니다. 각 문서에 Value라는 새로운 필드가 추가되고, 해당 필드에는 비밀번호의 MD5 해시 값이 저장된 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5cd6a4c66d78f205348bc619"), "UserName" : "Adam", "UserPassword" : "Adam123456", "Value" : "6523857c2bf79b63fd5fa0322575f7be" }

{ "_id" : ObjectId("5cd6a4e46d78f205348bc61a"), "UserName" : "Chris", "UserPassword" : "Chris_121#", "Value" : "3391ccbe33624258cafa23aa50301615" }

마무리

이처럼 hex_md5() 함수와 forEach(), save() 메서드를 조합하면 기존 컬렉션의 모든 문서에 손쉽게 MD5 해시 값을 추가할 수 있습니다. 다만 참고할 점은 MD5는 보안 목적의 비밀번호 저장에는 적합하지 않다는 것입니다. 실제 서비스에서는 bcrypt나 Argon2 같은 강력한 해시 알고리즘을 사용하는 것이 좋으며, MD5는 데이터 무결성 검사 등 비보안 용도로 활용하는 것이 바람직합니다.