ʞɔı*_*ɔıu 9 language-agnostic encryption algorithm
你怎么能廉价地双向加密一个32位的int,这样每个数字都映射到那个空间中的其他int并以一种难以预测的方式返回?
当然,并不需要在映射表中预先存储42.9亿个整数.
显然,你需要某种随机密钥才能保证安全.在这种情况下:
int original = 42;
int key = give_me_a_random_int();
int encrypted = original ^ key;
int unencrypted = encrypted ^ key;
// now, unencrypted == original == 42
Run Code Online (Sandbox Code Playgroud)
这只是一个简单的异或.XORing将再次扭转这一过程.
此外,我应该注意,这只适用于一次使用.它被称为一次性垫.如果您对非随机数据使用相同的密钥两次,则攻击者可能会对其进行解密.