RSA相关

1.      RSA 密钥生成过程

a)      选取两个大素数pq ,并计算n = p*q

b)      e, 满足e ((p-1)*(q-1)) 互质。一般取 0x10001,

c)      计算 d , 满足 d * e mod((p-1)*(q-1)) = 1

d)      此时dn 为私钥,en 为公钥。

e)      计算:明文A ,密文B

A = B^d mod n, B = A^e mod n

 

RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER -- (inverse of q) mod p }
Version ::= INTEGER

-version is the version number, It shall be 0 for OpenSSL
-modulus is the modulus n.
-publicExponent is the public exponent e.
-privateExponent is the private exponent d.
-prime1 is the prime factor p of n.
-prime2 is the prime factor q of n.
-exponent1 is d mod (p-1).
-exponent2 is d mod (q-1).
-coefficient is the Chinese Remainder Theorem coefficient q-1 mod p.

2.      CTR5 元组算法,CTR :中国剩余定理。计算更快捷。

3.      E 的取值, 取一个素数,与互质。一般取 0x10001,0x11, 后者计算速度快,但安全级别不够。

 

4.      Diffie-Hellman

a)      通信双方AB 约定素数q, n

b)      A 生成 X=q^x mod n; b 生成 Y=q^y mod n

c)      交换XY

d)      B 计算X^y mod n, A 计算Y^x mod n 得到相同密钥

 

5.      判定大素数算法

a)      确定一个100 以内素数表

b)      生成一个大数,检查素数表,如果都通过的话,是素数概率很大。尝试进行RSA 运算,结果正确则确定是素数。

c)      如果不正确,每次递增2 ,重复检查。

 

6.      RABIN-MILLER 大素数判断算法

a)      计算奇数 M R ,使得 N=(2**r)*M+1. N 用二进制数 B 来表示,令 C = B - 1 。因为 N 为奇数,所以 C 的最低位为 0 ,从 C 的最低位的 0 开始向高位统计。当遇到第一个 1 时, 0 的个数为 R M B 右移 R 位的值

b)      选择随机数 A 2 <= A < N 1

c)      测试条件 1 A**M MOD N = 1 ,则 N 通过随机数 A 的测试

d)      测试条件 2 对于递增的 i 0 <= i < r ,若有一个 i ,使得: A**((2**i)*M) MOD N = N-1 ,则 N 通过随机数 A 的测试

e)      素数结论 重复 2 4 的步骤,选定随机数 A (真随机数)进行测试, N 确为素数的概率和测试次数 n 有关 . n = 3 ,则 N 为素数的概率为 99.90%

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值