【问题标题】:Signing using PKCS#1v1.5 in python在 python 中使用 PKCS#1v1.5 进行签名
【发布时间】:2016-11-18 23:39:02
【问题描述】:

我正在为 Python 中的 RSA 签名编写基本代码。我正在按照算法"signing using PKCS#1v1.5" given in this link" 编写我的代码。

我遇到的问题是:

  1. str(0xff) 将打印为255 如果要打印为ff 怎么办。
  2. m1=int(EB) 此处给出错误,即字符串无法转换为整数

另见代码中的 cmets。

import base64
import hashlib
import sys

n = 103923750583675917777452723084902275956322321347251369547198561741725160583083214244873468324950694356892627873520290850868687184677774313738345853731914172873201679734133922293223038318576487055717405740516986030705800665383388489578499651714083347835387576319528274700123545962228546255987411521556243948149

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

【问题讨论】:

  • 我不确定您的问题是什么?
  • 我想删除我的代码中的错误。我在代码中提到了错误出现的地方。
  • 在行 m1=int (EB)。我想将字符串 EB 转换为整数,以便我可以对其进行签名。但是,每当我运行代码时,它都会为 int() 以 10 为基数提供错误无效文字。
  • 最好将实际问题包含在问题的文本中;这使它更加清晰。我已经为你编辑了这个问题(还要注意我是如何删除了很多不需要这个问题的额外信息)。附言// 在 Python 中不用于表示 cmets。
  • 感谢您的帮助。这是我第一次在这个论坛上发帖。我没有意识到我犯了这么多错误。

标签: python string rsa signature


【解决方案1】:

str(0xff) 将打印为 255 如果要打印为 ff 怎么办。

你可以使用格式化:

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

m1=int(EB) 在此处给出错误,即字符串无法转换为整数

使用 int() 的第二个参数,它显示了你的整数的基数:

int('ff', 16)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-08
    • 2015-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多