-qreg q[1];
+qreg q[8];
creg c[8];
-h q[0]; measure q[0] -> c[0];
-h q[0]; measure q[0] -> c[1];
-h q[0]; measure q[0] -> c[2];
-h q[0]; measure q[0] -> c[3];
-h q[0]; measure q[0] -> c[4];
-h q[0]; measure q[0] -> c[5];
-h q[0]; measure q[0] -> c[6];
-h q[0]; measure q[0] -> c[7];
+
+//bits to encrypt
+h q[0];
+measure q[0] -> c[0];
+h q[1];
+measure q[1] -> c[1];
+
+//encryption key
+h q[2];
+measure q[2] -> c[2];
+h q[3];
+measure q[3] -> c[3];
+
+//encrypt
+if(c[0]==1) x q[4];
+if(c[1]==1) x q[5];
+cx q[2], q[4];
+cx q[3], q[5];
+measure q[4] -> c[4];
+measure q[5] -> c[5];
+
+//decrypt
+if(c[4]==1) x q[6];
+if(c[5]==1) x q[7];
+cx q[2], q[6];
+cx q[3], q[7];
+measure q[6] -> c[6];
+measure q[7] -> c[7];
+
print c;
+++ /dev/null
-qreg q[1];
-creg c[4];
-
-hvar 12.34;
-h q[0]; measure q[0] -> c[0];
-h q[0]; measure q[0] -> c[1];
-h q[0]; measure q[0] -> c[2];
-h q[0]; measure q[0] -> c[3];
-print c;
-
-rand;
-h q[0]; measure q[0] -> c[0];
-h q[0]; measure q[0] -> c[1];
-h q[0]; measure q[0] -> c[2];
-h q[0]; measure q[0] -> c[3];
-print c;
-
-hvar 43.21;
-h q[0]; measure q[0] -> c[0];
-h q[0]; measure q[0] -> c[1];
-h q[0]; measure q[0] -> c[2];
-h q[0]; measure q[0] -> c[3];
-print c;
-
--- /dev/null
+qreg q[1];
+creg c[4];
+
+hvar 12.34;
+h q[0]; measure q[0] -> c[0];
+h q[0]; measure q[0] -> c[1];
+h q[0]; measure q[0] -> c[2];
+h q[0]; measure q[0] -> c[3];
+print c;
+
+rand;
+h q[0]; measure q[0] -> c[0];
+h q[0]; measure q[0] -> c[1];
+h q[0]; measure q[0] -> c[2];
+h q[0]; measure q[0] -> c[3];
+print c;
+
+hvar 43.21;
+h q[0]; measure q[0] -> c[0];
+h q[0]; measure q[0] -> c[1];
+h q[0]; measure q[0] -> c[2];
+h q[0]; measure q[0] -> c[3];
+print c;
+