목록안드로이드 (4)
It's easy, if you try
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/baZye6/btq3TxGY8ul/pmFd78bLkJKpCb5jJpf7L1/img.png)
Base64 일단 Base64가 뭘까? 컴퓨터 분야에서 쓰이는 Base64란 8비트 이진 데이터를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이라고 한다. Encoding 은 이진데이터를 일련의 문자열로, Decoding 은 일련의 문자열을 이진데이터로 바꾸는 것이다. encodToString public static String encodeToString (byte[] input, int flags) Base64를 이용하여 byte Array 를 String으로 Encoding 할 때 이용하는 함수이다. 나는 text를 private key로 디지털 서명한 byte[] 값을 서버에 String 형식으로 보내야하기 때문에 사..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bafQRI/btq3STKEp4i/yN2WFh1RDtklFQ3Sj5txZ1/img.png)
클라이언트의 Private Key로 서명한 Challenge Number를 서버로 보내 (기존 클라이언트에게 받은)Public Key 로 Verify 하는 과정 위 플로우 중 4, 6 번의 과정을 다룰 것이다. Private Key 를 이용하여 Challenge Number 에 서명하기 (4번 과정) - Client getDigitalSignature() private static final String SIGNATURE_ALGORITHM = "SHA256withRSA"; ... public String getDigitalSignature(String packageName, String text) { try{ Signature signature = Signature.getInstance(SIGNATURE..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dnWGwD/btqWULTOoLj/pWFKSyBI3KtX7Kvhjc4DUk/img.png)
코루틴이 뭘까 ? (Corutine) 코틀린 뿐만 아니라 파이썬, Javascript 등 여러언어에서 지원하고 있는 개념 ! 새로운 개념이 아닌 초창기부터 존재하던 개념이다. 근데 왜 지금 공부하는 걸까? 코루틴을 사용하면 비동기 처리가 너무나도 쉽게 이루어질 수 있다. 코루틴 키워드 3가지 협력형 멀티 태스킹 동시성 프로그래밍 지원 비동기 처리를 쉽게 도와줌 특징1. 협력형 멀티 태스킹 (Co + rutine) Co: 협력, 함께 라는 의미를 지니고 있다. rutine: 하나의 태스크, 함수 즉, 코루틴은 협력하는 함수이다. 여기서 rutine은 main/ sub로 나누어지는데 흔하게 볼 수 있는 main 함수와 sub 함수 같은 개념으로 이해하면 편하다. 일반 함수는 루틴에 진입점(함수 호출)과 탈출..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dFfGd4/btqWBA5H6kQ/uFPSpoyklyFBZo7DIMvXdk/img.png)
안드로이드 스튜디오에서 코드를 통해 해시 키를 얻어올 수 있다. "package name"에 프로젝트 패키지 네임을 넣고 실행하면 로그에 해시키가 찍힌다. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) try { // 해시키 val info = packageManager.getPackageInfo("package name", PackageManager.GET_SIGNATURES) for (signature in info.signatures) { val md = MessageDigest.getInstance("SHA") md.u..