2016-11-18 4 views
0

나는 RSA 서명을위한 기본 코드를 Python으로 작성했습니다. 내 코드를 작성하려면 "signing using PKCS#1v1.5" given in this link" 알고리즘을 따르고 있습니다.Python에서 PKCS # 1v1.5를 사용하여 서명

제가하는 데 문제는 다음과 같습니다

  1. str(0xff)ff로 인쇄 할 경우 수행 할 작업에 255로 인쇄됩니다.
  2. m1=int(EB)는 여기에 오류를 제공하는 문자열은

은 또한 코드의 주석을 참조 정수로 변환 할 수 없습니다.

import base64 
import hashlib 
import sys 

n = 10392375058367591777745272308490227595632232134725136954719856174172516058308321424487346832495069435689262787352029085086868718467777431373834585373191417287320167973413392229322303831857648705571740574051698603070580066538338848957849965171408334783538757631952827470

e = 65537 
d = 17565091249452647225549595093023216057619090797007849313736034124434893324058360379487364521346397323516481360986683274410980788633530769996790469838235089550522885790106853124306578513977869050393094033637670437634572856174875038057195517551596745993052717984365235149738925687601660611790816608095661093629 

m= '250887726' 
h= hashlib.sha256 (m) 
print h 

t= '3031300d060960864801650304020105000420' + str(h) 
print t 
str1=str(00) 
print str1 
str2=str(01) 
print str2 
str3=str(0xff) # it prints as 255 what to do if want to print it as ff 
print str3 
EB=str1+str2+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str3+str1+str(t) 
print 'EB:', EB 

m1=int(EB) # it gives error here that string can't be converted to integer          

s= pow (m1, d, n) 

print 'signature: ',s 
+0

저는 아닙니다 e 귀하의 질문은 여기에 무엇입니까? – Carpetsmoker

+0

내 코드에서 오류를 제거하고 싶습니다. 오류가 나타나는 코드에서 언급했습니다. – sar

+0

라인 m1 = int (EB). 문자열 EB를 정수로 변환하여 서명 할 수 있습니다. 하지만 내가 코드를 실행할 때마다 기본 10 인 int()에 대한 문자가 유효하지 않습니다. – sar

답변

0

STR (0xff가)는 FF로 인쇄 할 경우 어떻게 할 것인지를 255으로 인쇄됩니다.

당신은 서식을 사용할 수 있습니다

'{:x}'.format(0xff) 
이 이

M1 = INT (EB)에 해당 문자열이 INT의

를 사용하여 두 번째 인수를 정수로 변환 할 수 없습니다 여기에 오류가 있습니다

() 어떤 정수가 어떤 기본 단위로 표시되는지를 보여줍니다.

int('ff', 16)