2016-11-18 3 views
0

Я писал базовый код для подписания RSA в python. Я следую алгоритму "signing using PKCS#1v1.5" given in this link", чтобы написать свой код.Подписание с использованием PKCS # 1v1.5 в python

Проблема у меня есть:

  1. str(0xff) напечатает в качестве 255, что делать, если нужно напечатать его в качестве ff.
  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

Я не суп Какой у вас вопрос? – Carpetsmoker

+0

Я хочу удалить ошибки в моем коде. Я упомянул в коде, где появляются ошибки. – sar

+0

В строке m1 = int (EB). Я хочу преобразовать строку EB в integer, чтобы я мог ее подписать. Но всякий раз, когда я запускаю код, он дает ошибку недействительный литерал для int() с базой 10. – sar

ответ

0

ул (0xff) будет печатать, как 255, что делать, если нужно напечатать его в фф.

Вы можете использовать форматирование:

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

m1 = INT (EB) дает ошибку здесь, что строка не может быть преобразована в целое

Используйте второй аргумент междунар (), который показывает, в каком основании находится ваше целое число:

int('ff', 16)