异或运算实例解析

异或运算实例解析异或规则异或运算异或与加密异或是一种逻辑运算符 用于二进制位运算 对整形变量 如 int a 1 b 2 进行异或操作 计算机会先将 a b 编码为二进制数 在进行异或操作 int a b 1 2fmt

欢迎大家来到IT世界,在知识的湖畔探索吧!

  1. 异或规则
  2. 异或运算
  3. 异或与加密

异或是一种逻辑运算符。用于二进制位运算。对整形变量(如:int a=1,b=2)进行异或操作,计算机会先将ab编码为二进制数,在进行异或操作。

int a,b = 1, 2 fmt.Printf("%b %b\n", a, b) 01 10

欢迎大家来到IT世界,在知识的湖畔探索吧!

a,b转为二进制为01 10,进行异或运算的即01 ^ 10,而非我们变量所赋值的字面变量。a^b结果二进制结果为11,十进制结果为3,一定要区分开。

1. 运算规则

二进制位进行异或运算时:

  • 0 ⊕ 0 = 0
  • 0 ⊕ 1 = 1
  • 1 ⊕ 0 = 1
  • 1 ⊕ 1 = 0

异或运算结果:当两个输入不相同时,结果为1,否则结果为0。在计算机中使用符号^(shift+6)表示。

想象你有一枚硬币,做如下假设:

=左边的异或运算。两次投掷动作0表示不翻转,1表示翻转。

=右边的结果。两次投掷异或运算结果0表示反面,1表示正面。

带入公式中:

  • 不翻转0 ⊕ 不翻转0 = 反面0
  • 不翻转0 ⊕ 翻转1 = 正面1
  • 翻转1 ⊕ 不翻转0 = 反面1
  • 翻转1 ⊕ 翻转1 = 正面0

以下为使用Go语言,进行异或运算的示例代码。输出格式,%b 二进制 %d 十进制

欢迎大家来到IT世界,在知识的湖畔探索吧!func main() { var a = 0b0001 var b = 0b0000 fmt.Printf("a=1 b=0 xor:%b\n", a^b) b = 0b0001 fmt.Printf("a=1 b=1 xor:%b\n", a^b) a = 0b0000 fmt.Printf("a=0 b=1 xor:%b\n", a^b) b = 0b0000 fmt.Printf("a=0 b=0 xor:%b\n", a^b) }

输出为:

a=1 b=0 xor:1 a=1 b=1 xor:0 a=0 b=1 xor:1 a=0 b=0 xor:0

2. 异或运算

前面已经说了异或的规则。使用两个比较大的数字来进行异或操作。看多二进制位与单二进制是否有不同呢?

使用变量var c, d = 123, 456,转换为二进制后c = d = ,右端对齐,填充0,将cd的二进制位数保持一致。补齐后为c=00

使用cd,进行异或操作,运算结果如下:

欢迎大家来到IT世界,在知识的湖畔探索吧! c = 00 ^ d =  x = 

结果: 二进制

cd相同位置上的二进制数相同时,结果为0;值不同时,结果为1。

3. 异或与加密

假设,结果上面例子想象c为明文,d为密钥,有没有办法通过在不知道密钥的情况下,仅仅通过结果,恢复到明文呢?

当已知xd的值,可以使用xd进行异或运算,即可得到c的值。

 c =  ^ d =  c = 00

结果: 二进制00

仅知道异或结果x时,有没有办法得到c的值呢?

00在计算机中是一个比较小的数字,假设c是某登录系统的一个密码,该系统无安全措施的情况下,可以通过穷举的方式登录,我们知道c的十进制值为123,计算机的速度可能几秒钟就登录成功了。

所以,假设d是加密中密钥,安全性会很差,密钥选择比较复杂的密钥相比小数字更安全。

异或运算是密码学中一种基础且重要的运算方式。异或运算常用于密码学的多种场合。异或操作关注的是数据元素本身的值按照特定逻辑规则进行的变换。在实际应用中,异或通常会结合其他复杂机制来提高系统的安全性。

掌握异或运算对于学习密码学至关重要,因为它在密码学中有多种实用的应用,并且是许多加密算法的基础组件。

读完后,忍不住要加个关注!不是我吹,但你会后悔没关注的!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/100871.html

(0)
上一篇 2天前
下一篇 2天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信