기존에는 수 많은 디바이스들을 구별하기 위해서 IP나 MAC Address를 사용햇습니다.

하지만, 모바일 디바이스는 네트워크를 ON OFF만 해도 IP가 변경되고, 위치에 따라 수시로 바뀔 수도 있고, 여러 대의 스마트폰이 한 개의 WIFI를 통해 접속하거나 DHCP(내부 IP 자동할당)기능을 끄고 다른 기기에다 이전에 사용했던 내부 ip를 할당하게 되는등의 상황을 고려하면 ip는 절대 고유한 값을 가진다고 볼 수 없습니다. 또, Mac Address는 네트워크 카드의 고유 값이라고 하지만, 만약 wifi를 거치게 될 시에는 해당 디바이스의 Mac Address 가 아닌 wifi의 Mac Address로 교체됩니다.

 

UUID는 16 옥텟(128비트)의 수이며, 표준 형식에서 UUID는 32개의 16진수로 표현되며 총 36개 문자(32개 문자와 4개의 하이픈)로 된

8-4-4-4-12라는 5개의 그룹을 하이픈(-)으로 구분합니다.

 

ex) 6fee0f11-9c5e-4340-845c-34e6b5e6dd3b 와 같이 나타난다.






----------안드로이드

 

private String GetDevicesUUID(Context mContext){

        final TelephonyManager tm = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);

        final String tmDevice, tmSerial, androidId;

        tmDevice = "" + tm.getDeviceId();

        tmSerial = "" + tm.getSimSerialNumber();

        androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

        UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32| tmSerial.hashCode());

        String deviceId = deviceUuid.toString();

        return deviceId;

    }




----------아이폰


 

NSString *deviceId = [[[UIDevice currentDevice] identifierForVendor] UUIDString];





----------JAVA에서 구현

import java.util.UUID;

 

public class Exam {

public static void main(String[] args) {

// 고유키 생성

System.out.println("고유키 : "+UUID.randomUUID().toString());

// 응용편 (비밀번호 초기화 6자리 비밀번호)

int start = (int)(Math.random()*27);

System.out.println("초기 비밀번호 : "+UUID.randomUUID().toString().replace("-", "").substring(start, start+6));

}

}

+ Recent posts