2016-08-11 2 views
1

다음 문제가 있습니다. 를 통해 얻기 PUBLIC_KEY HTTP 및 (훨씬 더 큰하지만 난 키의 가짜 내용을 왼쪽)와 같은 이진 있습니다구문 분석 public_key를 사용하여 레코드 형식을 지우는 방법

<<"-----BEGIN PUBLIC KEY-----\nMIB\n-----END PUBLIC KEY-----">> 

crypto:verify/5를 호출 할 필요가 있습니다. 그러나 그것은 기다립니다 rsa_public() = [key_value()] = [E, N] 그리고 어떻게 내 이진 공개 키 지수 및 모듈에서 얻을 방법/정보를 찾을 수 없습니다. 어떤 도움

감사

내가 찾은

UPDATE와 같은 방식으로 마지막

** exception error: bad argument 
    in function crypto:rsa_verify_nif/4 
     called as crypto:rsa_verify_nif(sha256, 
             {digest,<<138,12,163,24,186,81,122,113,15,221,229,18,66, 
                68,254,150,205,251,145,83,107,139,192,236,65, 
                ...>>}, 
             <<40,169,124,140,188,173,31,150,44,227,57,150,41,119,67, 
              12,100,69,14,17,153,221,182,12,22,55,...>>, 
             [not_encrypted, 
             <<48,130,1,34,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0, 
              3,130,1,15,...>>]) 
    in call from crypto:verify/5 (crypto.erl, line 491) 


Binary = <<250,22,62,160,112,157,51,51,128,0,19,136,87,172,119,11,1,234,46,241, 
      195,26,161,249,36,88,36,113,47,229,93,206,11>>, 

Sign = <<72,138,112,61,19,195,159,50,225,213,41,161,74,220,141,134,242,22,124, 
     250,29,82,163,240,192,255,183,226,60,156,3,85,51,251,53,44,191,113,98, 
     188,128,211,182,82,109,239,190,30,45,31,97,0,241,134,138,97,46,133,22, 
     169,109,134,33,73,98,171,206,53,12,68,201,155,230,9,132,63,169,141,73, 
     164,99,194,230,121,254,50,230,95,255,61,197,126,95,66,48,227,48,88,65, 
     95,8,222,10,164,133,192,47,238,21,172,103,80,53,115,132,246,140,34,36, 
     135,108,12,214,180,178,198,191,129,147,133,177,32,160,221,18,244,255, 
     254,14,148,163,169,31,251,148,170,246,235,46,16,206,42,156,215,199,50, 
     78,93,210,215,223,170,59,135,70,166,138,224,13,224,151,59,28,203,30, 
     244,178,33,91,4,212,204,25,127,45,98,174,199,74,147,172,248,53,60,141, 
     68,1,10,18,71,8,141,196,28,63,30,239,2,192,246,117,11,235,81,173,143, 
     207,55,32,171,6,236,223,194,223,206,140,202,193,241,63,17,165,146,136, 
     252,119,241,229,4,178,186,132,191,42,134,98,85,141,9,44,79,79,165,197, 
     43>>, 


RSAPublicKey =  [not_encrypted, 
       <<48,130,1,34,48,13,6,9,42,134,72,134,247,13,1,1,1,5,0,3,130,1, 
       15,0,48,130,1,10,2,130,1,1,0,167,250,126,245,154,26,64,78,95, 
       230,173,52,133,251,82,139,189,140,204,18,176,83,193,38,111, 
       24,167,216,68,216,139,188,48,246,133,34,117,27,180,254,181, 
       112,153,4,144,249,19,214,87,99,68,242,139,55,106,183,247,21, 
       126,42,121,166,57,82,51,43,54,121,188,21,122,175,50,108,138, 
       242,160,191,121,1,161,151,208,177,206,60,126,37,196,163,144, 
       141,60,140,16,72,63,27,160,56,1,194,43,48,153,75,197,42,223, 
       20,201,232,10,176,84,150,64,188,241,88,216,234,95,49,48,53, 
       196,241,78,216,31,10,154,123,237,236,97,10,115,192,38,168, 
       152,78,22,216,180,214,48,69,191,191,173,125,197,103,98,98, 
       241,173,13,88,6,237,169,99,179,216,219,64,76,15,214,113,248, 
       181,222,5,22,239,117,113,4,200,62,210,180,212,157,209,209,18, 
       50,133,103,26,118,155,93,28,110,85,17,236,252,19,191,126,115, 
       244,138,81,234,94,219,131,213,82,80,184,49,125,99,156,95,91, 
       196,9,119,251,213,109,84,20,228,28,224,172,146,3,95,103,7,42, 
       213,17,169,236,230,31,108,226,188,140,163,199,2,3,1,0,1>>] 
+0

pubkey + signature + 파일의 전체 예제가 포함되도록 질문을 업데이트하여 실제 해결책이 있는지 확인할 수 있도록하십시오. –

+0

@ NathanielWaisbrot 완료! –

답변

1

[{_, Modulus, Exponent}] = public_key:pem_decode(PublicKey) 
RSAPublicKey = [Exponent, Modulus] 

그러나 crypto:verify(rsa, sha256, Binary, Sign, RSAPublicKey) 충돌, 내가 솔루션을 작업 발견했습니다 :

[RSa] = public_key:pem_decode(PublicKey), 
RSAPublicKey = public_key:pem_entry_decode(RSa), 
public_key:verify(Binary, sha256, Sign, RSAPublicKey). 
관련 문제