| 程序包 | 说明 |
|---|---|
| cn.ponfee.commons.jce.implementation |
The crypto implementation by self, include digest, rsa and ecc
|
| cn.ponfee.commons.jce.implementation.ecc |
ECC implementation
|
| cn.ponfee.commons.jce.implementation.rsa |
RSA implementation
|
| 限定符和类型 | 类和说明 |
|---|---|
class |
NoopCryptor
Null Cryptor that do nothing
|
| 限定符和类型 | 类和说明 |
|---|---|
class |
ECCryptor
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
|
| 限定符和类型 | 类和说明 |
|---|---|
class |
AbstractRSACryptor
http://blog.51cto.com/xnuil/1698673
RSA Cryptor, Without padding
RSA私钥解密证明:费马小定理(欧拉定理特例)
等同证明:c^d ≡ m (mod n)
因为:m^e ≡ c (mod n)
于是,c可以写成:c = m^e - kn
将c代入要我们要证明的那个解密规则:(m^e - kn)^d ≡ m (mod n)
等同证明:m^(ed) ≡ m (mod n)
由于:ed ≡ 1 (mod φ(n))
所以:ed = hφ(n)+1
得出:m^(hφ(n)+1) ≡ m (mod n)
|
class |
RSAHashCryptor
RSA Cryptor based sha512 xor
|
class |
RSANoPaddingCryptor
RSA crypto without padding
|
class |
RSAPKCS1PaddingCryptor
RSA crypto with PKCS1 padding
|
Copyright © 2023. All rights reserved.