15 lines
		
	
	
		
			No EOL
		
	
	
		
			375 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			15 lines
		
	
	
		
			No EOL
		
	
	
		
			375 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| from string import ascii_uppercase as A
 | |
| 
 | |
| def idx(c): return A.index(c)
 | |
| def infer_shift(ct, pt):
 | |
|     return (idx(ct[0]) - idx(pt[0].upper())) % 26
 | |
| 
 | |
| def decrypt(ct, shift):
 | |
|     return ''.join(A[(idx(c) - shift) % 26] if c.isalpha() else c for c in ct)
 | |
| 
 | |
| known_ct = "CIW"
 | |
| known_pt = "yes"
 | |
| cipher = "XVIEWYWI"
 | |
| 
 | |
| shift = infer_shift(known_ct, known_pt)
 | |
| print(decrypt(cipher, shift)) |