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