Chinaunix首页 | 论坛 | 博客
  • 博客访问: 579531
  • 博文数量: 190
  • 博客积分: 10937
  • 博客等级: 上将
  • 技术积分: 2205
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-07 11:28
文章分类

全部博文(190)

文章存档

2012年(1)

2011年(27)

2010年(20)

2009年(142)

我的朋友

分类: WINDOWS

2011-09-02 16:39:28

若要生成密钥对,可以从创建名为 pq 的两个大的质数开始。这两个数相乘,结果称为 n因为 pq 都是质数,所以 n 的全部因数为 1、pqn

如果仅考虑小于 n 的数,则与 n 为互质数(即与 n 没有公因数)的数的个数等于 (p - 1)(q - 1)

现在,选择一个数 e,它与计算的值为互质数。则公钥表示为 {e, n}

若要创建私钥,则必须计算 d,它是满足 (d)(e) mod n = 1 的一个数。根据 Euclidean 算法,私钥为 {d, n}

纯文本 m 到密码文本 c 的加密定义为 c = (m ^ e) mod n解密则定义为 m = (c ^ d) mod n

字段总结

RSA Laboratories 网站上的 (PKCS #1:RSA 加密标准)的 A.1.2 节定义了 RSA 私钥的格式。

下表总结了 RSAParameters 结构的字段。第三列提供了 (PKCS #1:RSA 加密标准)的 A.1.2 节中的对应字段。

 

RSAParameters 字段

Contains

对应的 PKCS #1 字段

D

d,私钥指数

privateExponent

DP

d mod (p - 1)

exponent1

DQ

d mod (q - 1)

exponent2

Exponent

e,公钥指数

publicExponent

InverseQ

(InverseQ)(q) = 1 mod p

coefficient

Modulus

n

modulus

P

p

prime1

Q

q

prime2

 

RSA 的安全性基于这样的事实,给定公钥 { e, n },无论是直接计算还是通过将 n 因式分解为 pq,要计算出 d 都是不可行的。因此,与 dpq 相关的任何密钥部分都必须保密。如果您调用ExportParameters 并且仅请求公钥信息,这就是您将仅收到 ExponentModulus 的原因。仅当您具有对私钥的访问权限并且请求私钥时,其他字段才可用。

 

RSAParameters 不以任何方式加密,因此将它与私钥信息一起使用时应谨慎。实际上,包含私钥信息的任何字段都不可序列化。如果尝试通过远程调用或通过使用序列化程序之一来序列化 RSAParameters 结构,将仅接收到公钥信息。如果希望传递私钥信息,则必须手动发送该数据。在任何情况下,如果任何人能够获知这些参数,您传送的密钥将毫无用处。

原文地址:

阅读(4011) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~