Quick start

We shall use the following notation. For our purposes, the
pairing is a bilinear map from two cyclic groups, G1 and G2 to
a third group GT, where each group has prime order r.

Run pbc/pbc and type:

g := rnd(G1);
g;

The first line generates a random element g of the group G1,
while the second prints out the value of g. (The syntax was
influenced by bc, an arbitrary
precision calculator.) Next, enter:

h := rnd(G2);
h;

This assigns h to a random element of the group G2.
Actually, the default pairing pbc
uses is symmetric so G1 and G2 are in fact the same group, but
in general they are distinct. To compute the pairing applied to
g and h, type:

pairing(g,h);

The order of both g and h is r. Let’s generate two random
numbers between 1 and r:

a := rnd(Zr);
b := rnd(Zr);

By bilinearity, the resulting output of both of these lines
should be identical:

pairing(g^a,h^b);
pairing(g,h)^(a*b);

This program has other features but the commands
shown here should be enough to quickly and interactively
experiment with many pairing-based cryptosystems using real
numbers.