from qiskit import QuantumCircuit, Aer, execute
import numpy as np
n = 8 # toy key size (safe)
oracle_key = "10100110"
def aes_toy_oracle():
qc = QuantumCircuit(n+1)
for i, bit in enumerate(oracle_key):
if bit == "1":
qc.x(i)
qc.mcx(list(range(n)), n)
for i, bit in enumerate(oracle_key):
if bit == "1":
qc.x(i)
return qc
oracle = aes_toy_oracle()
grover = QuantumCircuit(n+1)
grover.compose(oracle, inplace=True)
grover.h(range(n))
grover.x(range(n))
grover.h(n-1)
grover.mcx(list(range(n-1)), n-1)
grover.h(n-1)
grover.x(range(n))
grover.h(range(n))
backend = Aer.get_backend("statevector_simulator")
result = execute(grover, backend).result()
state = result.get_statevector()
print("Grover statevector:", state)





































No comments:
Post a Comment