C 프로그래밍

리눅스 C프로그래밍 23.12.11

Nohsw 2023. 12. 11. 21:30

오늘은 퇴근 후 리눅스로 회원가입 프로그램 프로젝트를 이어서 시작하였다.
오늘은 새로운 코드를 알게되었다.
비밀번호 보안을 위해 getpass함수를 사용하고 싶었고, Visual Studio에서 사용했던 것처럼 1차와 2차 비밀번호 비교 후 일치하면 회원가입 성공이 되고 다르면 실패가 되게 구현하고 싶었다.
회원가입 성공 후 리스트로 아이디와 비밀번호 저장을 하고 싶었고, 로그인 시 가입되어있는 아이디와 비밀번호를 찾아 비교 후에 로그인 성공과 실패를 작동시키고 싶었다.
그래서 오늘 알게 된 코드는 비밀번호를 getpass함수로 사용자가 입력한 비밀번호를 구조체에 저장하는 코드인데 strncpy를 이용하는 것이다.

//예제
//구조체 test로 생성
struct test { 
	char Password[10];
};

int main() {
	struct test Test; //메인함수에서 구조체인 test에 연결하기 위해 Test 생성.
    
    //포인터 password 생성 후 getpass 함수사용
    char *password = getpass("패스워드 입력: ");  //사용자가 입력한 값이 password에 저장.
    
    //strncpy 함수를 통해 사용자가 입력한 값(password)을 구조체로 데이터 전달
    strncpy(Test.Password, password, sizeof(Test.Password) -1); 
    Test.Password[sizeof(Test.Password) -1] = '\0';
}
메인화면
회원가입 성공화면. (getpass를 사용했기에 비밀번호를 입력해도 화면에 나타나지 않는다.)
회원가입 실패화면 (비밀번호를 다르게 입력했기 때문에 1차와 2차 비밀번호가 서로 일치하지 않아 실패 출력)
로그인 실패화면 (아이디나 비밀번호를 다르게 입력하게 되면 실패 출력)
로그인 성공화면

이렇게 리눅스에서도 회원가입 프로젝트를 절반 성공하였다.
이제 회원가입 후 리스트로 잘 저장되는지 확인해보면 리눅스에서의 작은 프로젝트는 끝이 난다.
점점 원하는 부분이 작동도 되고 프로그래밍이 익숙해지는 것 같다.
 
이제 암호화에 대해서 공부를 해보고(C언어 기본문법도 계속 병행하며) 암호화 관련 함수를 만들어 반복문을 이용해 랜덤으로 여러번 암호화를 시켜볼까 생각하고 있다.
getpass의 단점은 육안으로는 당장 비밀번호를 알기는 힘드나 암호화가 진행되지 않아 개발자가 암호를 알려면 알 수도 있기에 암호화를 적용하여 정상적으로 암호화가 되었는지 확인해보고 싶다.
그리고 암호화를 랜덤으로 반복적으로 한 횟수만큼 복호화를 진행했을 때 암호가 나타나는지, 이러한 부분도 공부해보고 싶기에 꼭 성공하여 테스트 해보고 싶다. 
 
내가 이렇게 암호화를 공부하려는 이유는 실제로 개인정보 유출을 여러차례 겪었기 때문에 민감한 부분이 있다. 그래서 개발을 하면서 개인정보 보호와 보안에 힘쓰고 싶은 이유가 있기도 하다. 무엇을 만들던 개인 정보는 사용자를 제외한 그 누구도 알 수 없게 하는 그런 개발자가 되고 싶다.

'C 프로그래밍' 카테고리의 다른 글

리눅스 C프로그래밍 23.12.13 프로그램 소스 코드  (0) 2023.12.13
리눅스 C프로그래밍 23.12.12  (0) 2023.12.13
C프로그래밍 23.12.10  (0) 2023.12.11
C프로그래밍 23.12.10  (0) 2023.12.10
C프로그래밍 23.12.09  (0) 2023.12.09