10 자리 난수 - 10 jali nansu

앞에서 배웠던 위 두 가지 C 표준 라이브러리 파일을 이용하여 난수를 만드는 법을 배웁니다. 난수란 특정한 순서나 규칙을 가지지 않는 수로 무작위라고 생각하시면 됩니다.

난수를 만들 때 사용하는 함수로는 srandrand 그리고 time 함수가 있습니다. srandrand 함수는 stdlib.h 파일에 포함되어 있고, time 함수는 time.h 파일에 포함되어 있습니다.

  • srand는 호출할 때 전달받는 인자를 기반으로 해서 난수를 초기화 시켜줍니다.
  • randsrand 로 인해 생성된 값을 바탕으로 난수를 생성해줍니다.
  • time 함수는 인자값으로 NULL 을 넘기면 1970 년 1 월 1 일 0 시 (UTC 타임 존) 이후부터 인자값까지 현재까지 흐른 초 수를 리턴해줍니다.

시간은 멈추지 않고 계속해서 흐르므로 time 함수로 구한 초 수를 기반으로 srand 함수를 이용하여 난수 기준값을 초기화한 다음. rand 함수를 호출하면 시간을 기반으로한 진정한 무작위 숫자가 생성되게 됩니다.

srand, time 함수 사용법


srand 와 현재 시간을 가져오는 time 함수를 엮은 사용법입니다.

위 코드 한 줄을 rand 함수 호출 전에 선언하면 시간을 기준으로 초기화되는 진정한 난수를 만들어낼 수 있게 됩니다. 

rand 함수 사용법


실제 난수를 생성해주는 rand 함수의 사용법에는 몇 가지가 있습니다. rand 함수를 호출하면 10 자리 남짓한 랜덤한 숫자를 생성해주는데, 이 수를 이용하여 원하는 범위의 난수를 만들어낼 수 있습니다.

  • rand() % n : 0 ~ n - 1 범위의 난수를 생성합니다.
  • (rand() % n) + 1 : 1 ~ n 범위의 난수를 생성합니다.

위 두 가지만 알아두어도 주사위 게임을 만드는데는 충분합니다. 아래는 난수를 만드는 실제 코드입니다.

카테고리 : 웹툴/랜덤 2019. 5. 6. 22:37

길이
숫자 숫자 포함
영어 abc.. 포함
ABC.. 포함
특수 특수문자 포함 (@#$%^)
옵션

더 추가할 문자는 그냥 나열하시면됩니다.
예) ~!@#$%^&*/-+

여기에 결과가 표시됩니다.

랜덤 비밀번호 생성

랜덤 비밀번호 생성기 (Password Generator)

랜덤으로 비밀번호를 생성하는 도구입니다.

이 또한 흔한 도구입니다.

> 비밀번호 토막 상식

과연 이용자들이 주기적으로 바꾸는것이 안전할까?

제 의견은 "아니오" 이다.

왜 그렇게 생각하냐 의문이 생길수 있다.

우리는 주기적으로 바꾸라 배웠는데

먼저 제대로된 사이트에서는 해시로 저장하게 된다.

해시란 뭘까?

DB를 보유해도 비밀번호를 알아낼수 없다.

보안이 수준 미달인 사이트는 고려하지 않는다.

이를 토대로 역분석을 하려면

1. 타 웹사이트의 DB를 보유 할것

2. 해당 사이트의 해시 알고리즘과 솔트값을 모두 알것

3. 해당 알고리즘에 맞게 당신이 가지고 있는 모든 암호를 대입해서 분석할것

1 - 가능성은 없진 않다 만약 보안이 취약한 사이트라면

2 - 아무리 취약해도 알기 어려운수준..

3 - 해시만 제대로 되어있다면 이는 현재로는 GPU(그래픽카드) 수만개로 돌려도 그래픽 1개로 비트코인 채굴하는것보다 어려운 연산들이다. 수백년 이상 걸릴수있다.

비밀번호의 길이에 따라 갈려진다 비밀번호는 20자리 이상을 추천한다.

비밀번호 주기적으로 바꾸는게 맞으려면..

1. 사이트가 복호화가 가능한 알고리즘을 쓴다.

2. 해당 웹사이트의 서버소스는 모두 오픈되어있다.

3. 내 컴퓨터가 해킹되었다.

가장 가능성이 높은건 3. 내 컴퓨터가 해킹되었다 인데

그러나 이는 비밀번호를 바꾸어도 무용지물이다.

바꾼다고 해도 바꾸는것도 알게되는데..

> 비밀번호 쉽고 길게 잘 만들기

그냥 단어+숫자+(특수문자) 조합이 제일 흔하다.

근데 이건 까먹기가 너무 쉽다. 또는 같은비번을 중복하여 쓴다.

그런데! 만약 비밀번호를 길게 하면서 쉽게 외울 방법이 있다면?

비번 : dlrjsdlatlqlqjs123

한글로 이건임시비번123

이라고 적은 것이다.

비번 : dlrjsrnrmfqlqjs123

한글로 이건구글비번123

이라고 적은 것이다.

이와같이 문장으로 비밀번호를 만들면 쉽게 길이가 길어지고 외우기도 편리하다.

만약 원하시는 도구가 있으시면 '이런거 원해요 탭에서 요청해주세요~~

즐겨찾기 하시고 많이 찾아주세요.

저작권 보호안내무단 전재, 재배포 행위는 금지됩니다. (글을 복사하여 게시금지)
본문의 일부(링크용 문장) 인용은 가능하지만, 출처와 링크(a 태그)를 남기셔야 됩니다.
(웹툴을 이용하고, 스크린샷/녹화하는것은 상관없습니다.)

예외적으로. 저에게 허락받은 경우에는 본문을 전재할 수 있습니다.

만약, 본문 공유를 원하신다면 링크 공유를 해주세요

저작권 정책 확인하기

링크 공유하기

 댓글

랜덤 숫자 뽑기

카테고리 : 웹툴/랜덤 2019. 5. 6. 05:58

     
최소 숫자 최대 숫자
~
여기에 결과가 표시됩니다.

랜덤 숫자 뽑기

랜덤 숫자 뽑기

일단 어디서나 볼수있는 툴이고 매우 흔한 툴이다.

정말 간단한 소스로도 구현이 가능하고 쉽게 만들수 있다.

https://hi098123.tistory.com/30에 확률 알고리즘이 어떻게 구현되나 추상적으로 적어두었다.

확률이 어떻게 만들어지는지 이해하는데에는 도움이 잘될것이다.

다양한 툴들이 많으니 이용해주세요

모바일과 PC / 윈도우 맥 리눅스 가리지 않고 모두 작동합니다.

웹브라우저에서 작동하기 때문이지요

번외.

0 ~ 100 까지 뽑으면 무작위처럼 보이는데

0 ~ 1000 까지 뽑으면 왜 백의자리 숫자만 다오는것 같을까?

답은 0~99 는 100개인데 100~1000 까지는 901개 이다.

거의 90퍼 확률로 제일 높은자리 숫자가 나온다.

전체로 보면 고르게 값이 나오나

사람의 눈이 제일 높은자릿수만 잘보이는걸 문제 여길수도있다.

만약 원하시는 도구가 있으시면 '이런거 원해요 탭에서 요청해주세요~~

즐겨찾기 하시고 많이 찾아주세요.

저작권 보호안내무단 전재, 재배포 행위는 금지됩니다. (글을 복사하여 게시금지)
본문의 일부(링크용 문장) 인용은 가능하지만, 출처와 링크(a 태그)를 남기셔야 됩니다.
(웹툴을 이용하고, 스크린샷/녹화하는것은 상관없습니다.)

예외적으로. 저에게 허락받은 경우에는 본문을 전재할 수 있습니다.

만약, 본문 공유를 원하신다면 링크 공유를 해주세요

저작권 정책 확인하기

링크 공유하기

 댓글