저는 최근에 Google 크롬의 포장 과정에서 생산 된 PEM을 PyCrypto가 인식하도록하는 방법을 알아 내려고 노력했습니다. 문제는 표준 importKey 메서드로 인해 오류가 발생한다는 것입니다. 오랜 시간이 걸린 프로세스를 마친 후에는 DerSequence.decode 메소드 (모든 세부 사항은 here)를 리버스 엔지니어링하여 가져 오기를 처음에 시뮬레이션 할 수 있음을 깨달았습니다. 불행히도, 그것은 해결되지 않은 한 가지 문제로 나를 남겨 둡니다.Chrome 확장 프로그램을 포장하기 위해 Google PEM에 40자를 남겨 두는 이유
가져 오기 키를 가져올 수 있으며 상당히 일관된 것처럼 보입니다.하지만 40 자 이상 남았습니다.
import binascii
# read the pem file into chromepem
# the first and last lines are useless,
# we need it to be a string, not a tuple
# and it needs to be one string with no newlines.
chromepem = ''.join(open("chrome.pem","r").readlines()[1:-1]).replace("\n","")
# not sure why, but it looks like the first 40 characters aren't necessary.
# removing them seems to create a consistent public key anyway...
pem = binascii.a2b_base64(chromepem[40:])
그 40 자의 이유는 누구나 알고 있습니까? 이들을 무시하면 일부 개인/공개 키 쌍의 문제가 발생합니까?
간단하게'RSA.ImportKey()'를 사용해 보셨습니까? 첫 번째 줄과 마지막 줄에서 무엇이든해야하며, 모든 것을 읽고 ImportKey에 지정하십시오. –
나는 그랬다. 그것은 열쇠가 부적절하게 형식화되었다는 것을 나에게 말한다. 나는 절대로 20 시간의 좌절을 안겨줬을 것입니다. – cwallenpoole
하, 나는 너를 믿는다. 그러나 나는 물어야했다. 한 가지 문제는 PEM이 실제로 특정 형식이 아니라 이진 Blob을 사용하고 base64로 인코딩 한 다음 BEGIN 및 END 행으로 둘러싸는 일반적인 형식입니다. 아마도 ImportKey는 한 종류의 이진 BLOB를 기대하며 PEM 파일은 다른 종류입니다. 이 상황에는 PKCS8, PKCS12 및 openssl 독점적 인 세 가지 공통 개인 키 형식이 있습니다. 나중에 오늘은 크롬 소프트웨어로 놀아보고 어떤 PyCrypto RSA를 찾고 있는지 알 수 있는지 알아볼 것입니다. –