마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

RSA 암호화질문입니다.

0 추천

안녕하세요.

RSA 암호화를 해야하는데, 구글에 있는 대부분의 예제는 

공개키와 개인키를 직접만들어서 테스트하고 사용하더라구요.

저는 타 서버로 부터 공개키를 받으면  그 공개키로 암호화 해서 다시 서버로 암호화된 데이터를 전송해야하는데,  구글링해서 찾은 예제들은 어려가지 아주 다양한 오류들만 뿌릴뿐 ㅜㅠ 해결이 안되네요..

도와주세요!

 

byte[] publicBytes = Base64.getDecoder(publicK);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey pubKey = keyFactory.generatePublic(keySpec);
꾸우우 (1,140 포인트) 님이 2018년 4월 16일 질문
혹시 C 언어로도 가능하다면 알려주세요...
C함수를 java로 매핑한것이라. C 코드를 가이드 해 드려봤자 큰차이 없을 듯 합니다.

구글링 해서 나오는 것과 같이 코드는 큰 이상이 없는 듯 하며,
아무래도 입력하신  public key 형식이 잘 못 된 것으로 추정됩니다.
 public key는 노출되도 되니  public key를 올려주시는게 좋을 듯 합니다.
댓글 남겨주셔서 감사합니다.
퍼블릭 키 : pr4P29eqIaKIUbTz5JJDuUOQRAknAApjq1P
/UKIhae7CVTDhc8n61/bbGiiI6B0fG/UgFBaqTadSkDC55
aUqZxsPc62gq3qowjG8SewrBs+NGt6i6bbUlKKX+undCw==

서버 측으로부터 전달받은 값입니다...
java.lang.RuntimeException: error:0c000079:ASN.1 encoding routines:OPENSSL_internal:HEADER_TOO_LONG 가 나오는게 public key를 분석에 실패 하는 듯 합니다.
서버에서 사용하는 public key 저장법을 물어보시던지 아래 링크 보고 맞춰 주셔야 할 듯 합니다. 서버에서도 단말에서 올린 메세지를 복호화 해서 검증할테니. 그쪽 코드를 달라고 해서 복호화 하는 부분만 암호화 하는 방식으로 수정하시는게 제일 빠를 겁니다.
https://stackoverflow.com/questions/18039401/how-can-i-transform-between-the-two-styles-of-public-key-format-one-begin-rsa/29707204#29707204
감사합니다!
저도 똑같은 오류가 나와서 처음하는거다 보니까 막연히  코드가 잘못되었다고 생각하고만 있었습니다.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...