由于参数生成可能是一个昂贵的过程,这通常提前完成一次,然后在许多密钥交换中使用同一组参数。有没有办法在提前设置之前修改 p 和 g?
如果使用 openssl 命令,可以尝试 asn1...
# cat dh.conf
asn1=SEQUENCE:dh_key
[dh_key]
p=INTEGER:0x97
g=INTEGER:5
# openssl dh -in newkey.der -inform der -text -check
DH Parameters: (7 bit)
prime: 97 (0x61)
generator: 5 (0x5)
p value is not a safe prime
-----BEGIN DH PARAMETERS-----
MAYCAWECAQU=
-----END DH PARAMETERS-----
上面实现了简单的DH数学,即
> Alice Bob wants to change key...
> Let p =97 and g=5
> and XA=36 and XB=58
> so YA=g^XA mod p = 50
> YB=g^XB mod p = 44
> thus Alice:K=(YB) ^XA mod p=75
> Bob: K=(YA) ^XB mod p=75