p=11
q=17
# Calculate public modules value
n=p*q
# Calculate public value "e".
e=7
bezout=xgcd(e,euler_phi(n));bezout
# Calculate private value "d".
d = Integer(mod(bezout[1],euler_phi(n)));
# Encryption example
M = 123;
C = Mod(M^e,n)
Mod(C^d,n)
123
123
# Digital signature
S = Mod(M^d,n)
Mod(S^e,n)
123
123
# Alice blinds ignature
k = 43 #[1,n]
t = Mod(M*k^e,n)
# Bob signes t
S = Mod(t^d,n)
# Alice unblinds S
s = Mod(S/k,n)
Mod(M^d,n)
if s == Mod(M^d,n):
print "signature match"