|
|
## ECC ElGamal
- https://en.wikipedia.org/wiki/ElGamal_encryption
- [x] ECC ElGamal key generation - [x] ECC ElGamal Encrypton - [x] ECC ElGamal Decryption
#### Usage
- NewEG, Encryption, Decryption ```go // define new elliptic curve ec := ecc.NewEC(big.NewInt(int64(1)), big.NewInt(int64(18)), big.NewInt(int64(19)))
// define new point g := ecc.Point{big.NewInt(int64(7)), big.NewInt(int64(11))}
// define new ElGamal crypto system with the elliptic curve and the point eg, err := NewEG(ec, g) if err!=nil { fmt.Println(err) }
// define privK&pubK over the elliptic curve privK := big.NewInt(int64(5)) pubK, err := eg.PubK(privK) if err!=nil { fmt.Println(err) }
// define point to encrypt m := ecc.Point{big.NewInt(int64(11)), big.NewInt(int64(12))}
// encrypt c, err := eg.Encrypt(m, pubK, big.NewInt(int64(15))) if err!=nil { fmt.Println(err) }
// decrypt d, err := eg.Decrypt(c, privK) if err!=nil { fmt.Println(err) }
// check that decryption is correct if !m.Equal(d) { fmt.Println("decrypted not equal to original") } ```
|