public class ECCryptor
extends Cryptor
EC Cryptor based xor
origin ≡ origin ⊕ key ⊕ key
一、首先:生成随机数dk,在曲线上计算得到dk的倍点beta point,
beta point(public key) = basePointG(public key) * dk,
beta point(public key)作为公钥,dk作为私钥
二、加密:1)生成随机数rk,在曲线上计算得到rk的倍点gamma point,
gamma point(public key) = basePointG(public key) * rk,
由椭圆曲线特性可得出:beta point(public key) * rk = ECPoint S = gamma point(public key) * dk
2)ECPoint S = beta point(public key) * rk,把ECPoint S作为中间对称密钥,
通过HASH函数计算对称加密密钥:key = HmacSHA-512(ECPoint S)
3)加密:origin ⊕ key = cipher
4)打包加密数据Encrypted = {gamma point(public key), cipher}
三、解密:1)解析加密数据Encrypted: {gamma point(public key), cipher},得到:gamma point(public key),cipher
2)用第一步的私钥dk与gamma point(public key)进行计算得到:ECPoint S = gamma point(public key) * dk
3)通过HASH函数计算对称加密密钥:key = HmacSHA-512(ECPoint S)
4)解密:cipher ⊕ key = origin
- 作者:
- Ponfee