异或的符号是^。按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1, 否则该位为0.
xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a。xor运算可以用于简单的加密,比如我想对我MM说1314520,但怕别人知道,于是双方约定拿我的生日19880516作为密钥。1314520 xor 19880516 = 20665500,我就把20665500告诉MM。MM再次计算20665500 xor 19880516的值,得到1314520,于是她就明白了我的企图。
相同位不同则为1,相同则为0。
00101
11100
(^或者xor)
----------------
异或的符号是^。按位异或运算, 对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1, 否则该位为0.xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a。xor运算可以用于简单的加密,比如我想对我MM说1314520,但怕别人知道,于是双方约定拿我的生日19880516作为密钥。1314520 ...
异或,英文为exclusive OR,或缩写成xor
异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为: a⊕b = (¬a ∧
b) ∨ (a ∧¬b) 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则
for i = 1, #text do
local char = string.sub(text, i, i)
local keychar = string.sub(key, (i - 1) % #key + 1, (i - 1) % #key + 1)
local xorchar = string.char(string.byte(char) ~ string.byte(keychar))
result = result .. xorchar
return result
-- 解密函数
function decrypt(text, key)
return encrypt(text, key)
-- 测试
print("请输入要加密的文本:")
local text = io.read()
print("请输入密钥字符:")
local key = io.read()
local encrypted = encrypt(text, key)
print("加密后的文本为:" .. encrypted)
local decrypted = decrypt(encrypted, key)
print("解密后的文本为:" .. decrypted)
对于输入的文本和密钥字符,程序会输出加密后的
字符串
和解密后的
字符串
。注意,这个程序只能加密和解密 ASCII 字符集中的字符。