not*_*ted 0 security encryption cryptography rsa public-key-encryption
在这个简单的示例中,假设一个权限使用公共RSA密钥(e = 11,n = 85)来签署文档.你希望他们签署你的消息(这是号码42),但你不希望他们知道他们签署了什么,所以你使用11的盲目因子"r".在你的计算中你可能希望使用以下结果:
11 ? 35 = 1 mod 64
11 ? 31 = 1 mod 85
Run Code Online (Sandbox Code Playgroud)
显示简短的工作.
1)您应该授权签署什么号码?
2)当局会给你多少号码?
3)从该号码中提取42的签名.
4)使用私钥验证此答案.
我已经看过了,如果有人能和我一起指导这个例子,我将非常感激.
消息m为42,盲目因子r为11,因此提供给权限的值m'计算如下:
m' = m * re mod N m' = 42 * 1111 mod 85 m' = 62
权威机构将s'使用以下方式计算:
s' = m'd mod N
d私人指数在哪里.
因此,我们必须计算我们知道的满足关系的值的私有指数:
e * d = 1 mod ?(N)
?欧拉的功能在哪里?N是两个素数的乘积p和q每RSA算法的定义,并且因为N较小,我们可以很容易地因素,以确定p = 5和q = 17.
因此,定义如下?:
?(N) = (p-1)(q-1) ?(N) = (5-1)(17-1) = 64
使用提供的结果,我们可以确定:
e * d = 1 mod ?(N) 11 * d = 1 mod 64 d = 35
所以,当局应该向我们返回盲目签名,s'计算如下:
s' = m'd mod N s' = 6235 mod 85 s' = 73
要计算签名,我们需要s使用以下方法计算:
s = s' * r-1 mod N
在这里,是这样的反转:r-1r
r * r-1 = 1 mod N
再次使用给定的结果我们可以确定为:r-1
r * r-1 = 1 mod N 11 * r-1 = 1 mod 85 r-1 = 31
所以计算s成为:
s = s' * r-1 mod N s = 73 * 31 mod 85 s = 53
您的问题是使用私钥验证这一点,但是使用公钥验证签名,这就是我将在此处执行的操作:
为了确认这是正确的签名,我们验证:
m = se mod N m = 5311 mod 85 m = 42
因此,我们已经证明签名是有效的,因为m = 42- 我们的原始信息.