본문 바로가기

Daily Life

[ 로또번호 생성기 ]

728x90

일상 글은 처음 쓰네요ㅎㅎ

 

최근에 제가 20억을 버는 꿈을 꿔서 로또를 사게 됐습니다ㅋㅋㅋㅋ

 

그래서 재미로 로또번호 생성을 해주는 코드를 만들었습니다.

 

카페에서 코딩하는데 친구가 신기하게 보더군요.

 

카페에서 저는 로또 생성기 만들고 있고... 친구는 그림 그리고 있고... (남자 둘이서 카페에서 뭐 하는 건지ㅋㅋㅋㅋ)

 

아무튼 제가 블로그 시작한 거를 알고 친구가 프로필로 사용하라고 그림을 그려줘서 그림 자랑 겸 글을 올립니다.👏👏👏

 

아이패드로 스케치하더니 완성품을 보고 놀랐습니다.

 

제 코드를 보고 저 뒤에 글씨를 일일이 썼다고 하네요!!! 🤭

 

혹시 필요하신 분이 있을 수 있으니 코드도 올려드리겠습니다ㅋㅋㅋㅋㅋㅋ

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

class SHA256 {
    public byte[] encrypt_byte(String text, String salt) throws NoSuchAlgorithmException {
        byte[] textByte = text.getBytes();
        byte[] saltByte = salt.getBytes();
        byte[] bytes = new byte[textByte.length + saltByte.length];

        System.arraycopy(textByte, 0, bytes, 0, textByte.length);
        System.arraycopy(saltByte, 0, bytes, textByte.length, salt.length());

        MessageDigest md = MessageDigest.getInstance("SHA-256");
        md.update(bytes);

        return md.digest();
    }

    public String encrypt_string(String text, String salt) throws NoSuchAlgorithmException {
        byte[] textByte = text.getBytes();
        byte[] saltByte = salt.getBytes();
        byte[] bytes = new byte[textByte.length + saltByte.length];

        System.arraycopy(textByte, 0, bytes, 0, textByte.length);
        System.arraycopy(saltByte, 0, bytes, textByte.length, salt.length());

        MessageDigest md = MessageDigest.getInstance("SHA-256");
        md.update(bytes);

        return bytesToHex(md.digest());
    }

    private String bytesToHex(byte[] bytes) {
        StringBuilder builder = new StringBuilder();
        for (byte b : bytes) {
            builder.append(String.format("%02x", b));
        }
        return builder.toString();
    }
}

public class Lotto {
    public static void pList(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            System.out.printf("%d\t", arr[i]);
        }
        System.out.println();
    }

    public static void main(String[] args) throws NoSuchAlgorithmException {
        String[] myInfo = { "yline", "yline.tistory.com", "Y_LINE's_Repository", "android", "codingtest", "0808" };
        String salt = "2000000000";
        int[] lottoIndexs = new int[6];
        int[] lottoNumbers = new int[6];
        int maxNumber = 45;
        int minNumber = 1;

        SHA256 sha256 = new SHA256();
        SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");

        int i = 0;
        while (i < 6) {
            boolean isExist = false;
            sr.setSeed(sha256.encrypt_byte(myInfo[i], salt + System.currentTimeMillis()));
            int randomNumber = sr.nextInt(7);

            for (int idx : lottoIndexs) {
                if (idx == randomNumber) {
                    isExist = true;
                    break;
                }
            }

            if (!isExist) {
                lottoIndexs[i] = randomNumber;
                i++;
            }
        }

        i = 0;
        while (i < 6) {
            boolean isExist = false;
            sr.setSeed(sha256.encrypt_byte(myInfo[lottoIndexs[i] - 1], salt + System.currentTimeMillis()));
            int randomNumber = sr.nextInt(maxNumber - minNumber + 2);

            for (int number : lottoNumbers) {
                if (number == randomNumber) {
                    isExist = true;
                    break;
                }
            }

            if (!isExist) {
                lottoNumbers[i] = randomNumber;
                i++;
            }
        }

        pList(lottoNumbers);
    }
}

처참한 결과

github에도 올려놨습니다. 필요하신 분을 가져가서 사용하세요.(로또 숫자만 피한건 안 비밀...😭😭😭)

 

GitHub - yline0808/Lotto

Contribute to yline0808/Lotto development by creating an account on GitHub.

github.com

728x90