Files
xgcl/he/paillier/paillier_op_test.go
2026-05-27 23:03:00 +08:00

27 lines
513 B
Go

package paillier
import (
"crypto/rand"
"math/big"
"testing"
"github.com/stretchr/testify/assert"
"xdx.jelly/xgcl/grand"
)
func TestNeg(t *testing.T) {
sk, err := GenerateKeyFromPassword(2048, grand.GetRandom(32), grand.GetRandom(32), 1024)
assert.Nil(t, err)
pk := sk.Public()
m, _ := rand.Int(grand.Reader, pk.N)
mNeg := new(big.Int).Sub(pk.N, m) // n - m
c, _ := Encrypt(m, pk, grand.Reader)
c.Neg(pk) // Enc(n-m) = Enc(m)^-1 mod n^2
mm, _ := Decrypt(c, sk)
assert.Zero(t, mm.Cmp(mNeg))
}