异或加密算法

在二进制中:

1 XOR 0=1

0 XOR 1=1

1 XOR 1=0

0 XOR 0=0

可以看出若两个数相同取0,不同取1

运算 11001 ^ 01011 = 10010

最重要的是:异或运算具有可逆性

如何具有可逆性呢?

每个位数上的数值都进行异或比较:

1 XOR 0=1 那么这里相反的 1 XOR 0 = 1 也同样相等

0 XOR 0=0 那么这里相反的 0 XOR 0 = 0 也同样相等

即:若a XOR b=c,则有b XOR c=a (a,b,c分别表示0或1)

实现的C代码:

#include <stdio.h>
main()
{
   char a[]="Password";        //要加密的密码
   char b[]="encryption";      //密钥
   int i;

   //加密代码
   for(i=0;a[i];i++)
     a[i]=a[i]^b[i];
   printf("Your Password is encrypted: %s\n",a);

   /*解密代码*/
   for(i=0;a[i];i++)
      a[i]=a[i]^b[i];
   printf("You Password: %s\n",a);
  
}
posted @ 2020-04-22 21:32  zpchcbd  阅读(615)  评论(0)    收藏  举报