알파피플 앱

✨ id 가 랜덤처럼 보이는 이유

<유저ID : 52bits>



<국가ID : 10bits>





<Feistel cipher>

https://www.youtube.com/watch?v=FGhj3CGxl8I&ab_channel=Computerphile

김기범, Flutter at Alphapeople 김기범 ID가 1,2,3,4,.... 이렇게 되지 않는 이유에 대해서 미리 말씀드리면, 비지니스 규모를 예측할수 있는 ID를 쓰지 않기 위해 feisel cipher 로 암호화 했기 때문입니다. 예를 들어 경쟁사가 가입해보고 user_id 가 117인걸 알면 고객기 116명 있었다는걸 알수 있어서 좋지 않습니다.

그래서 유저 ID 는 완전히 기밀화 하기 위해 52bits 로 암호화했고,
국가 ID 는 비지니스 규모 예측과 무관한 상수 테이블이라 10 bits 로 암호화 했습니다.

Comments & Events

이재철, Backend at Alphapeople
왜 64bit가 아니고 52bit냐 하면, 

DB의 ID 필드는 64bit integer이지만, 
Javascript 가 최대 53bit integer까지만 지원해서 그렇습니다.

거기다 feistel cipher 알고리즘 특성상 비트수가 짝수여야 해서 52bits 입니다.
김기범, Flutter at Alphapeople 👍