✨ id 가 랜덤처럼 보이는 이유
<유저ID : 52bits>
<국가ID : 10bits>
<Feistel cipher>
https://www.youtube.com/watch?v=FGhj3CGxl8I&ab_channel=Computerphile
김기범
ID가 1,2,3,4,.... 이렇게 되지 않는 이유에 대해서 미리 말씀드리면, 비지니스 규모를 예측할수 있는 ID를 쓰지 않기 위해 feisel cipher 로 암호화 했기 때문입니다. 예를 들어 경쟁사가 가입해보고 user_id 가 117인걸 알면 고객기 116명 있었다는걸 알수 있어서 좋지 않습니다.
그래서 유저 ID 는 완전히 기밀화 하기 위해 52bits 로 암호화했고,
국가 ID 는 비지니스 규모 예측과 무관한 상수 테이블이라 10 bits 로 암호화 했습니다.
그래서 유저 ID 는 완전히 기밀화 하기 위해 52bits 로 암호화했고,
국가 ID 는 비지니스 규모 예측과 무관한 상수 테이블이라 10 bits 로 암호화 했습니다.
DB의 ID 필드는 64bit integer이지만,
Javascript 가 최대 53bit integer까지만 지원해서 그렇습니다.
거기다 feistel cipher 알고리즘 특성상 비트수가 짝수여야 해서 52bits 입니다.