from hashlib import sha512
 
# CANS 2018
a = "Javier Herranz and Germán Sáez: Secret Sharing Schemes for (k, n)-Consecutive Access Structures. (2018)"

#  Cryptologia 22(2)
b = "Randall K. Nichols: The Bible Code. (1998)"

# FSE 2002 (Eliane Jaulmes y a aussi un papier)
c = "Nikita Borisov, Monica Chew, Robert Johnson and David A. Wagner: Multiplicative Differentials. (2002)"

# CRYPTO 1983
d = "Manuel Blum, Umesh V. Vazirani and Vijay V. Vazirani: Reducibility Among Protocols. (1983)"

# Mycrypt 2005
e = "Simon Künzli, Pascal Junod and Willi Meier: Distinguishing Attacks on T-Functions. (2005)"

# IMA Conf. 1995
f = "Anne Canteaut: A New Algorithm for Finding Minimum-Weight Words in Large Linear Codes. (1995)"

# Cryptologia 33(2)
g = "Tim McDevitt and Tom Leap: Multimedia Cryptology. (2009)"

# Financial Cryptography 2001
h = "Éliane Jaulmes and Guillaume Poupard: On the Security of Homage Group Authentication Protocol. (2001)"

# CRYPTO 1985
i = "Zvi Galil, Stuart Haber and Moti Yung: Symmetric Public-Key Encryption. (1985)"

# Cryptologia 18(3)
j = "Craig Graham McKay: From the Archives Arvid Damm Makes an Offer. (1994)"

# CT-RSA 2008
k = "Pierre-Alain Fouque and Gaëtan Leurent: Cryptanalysis of a Hash Function Based on Quasi-cyclic Codes. (2008)"

# Des. Codes Cryptogr. 32
l = "Alan Offer and Hendrik Van Maldeghem: Spreads and Ovoids Translation with Respect to Disjoint Flags. (2004)"

def H(s):
	return int.from_bytes(sha512(s.strip().encode('utf8')).digest(), byteorder='big')

assert (H(a) & H(b) & H(c) & H(d)) ^ (H(e) & H(f) & H(g) & H(h)) ^ (H(i) & H(j) & H(k) & H(l)) == 0
