• 微信号
  • 微信号
您当前的位置:首页 > 学海无涯 > 茑语花香>使用位运算对数据或文件内容进行加密

使用位运算对数据或文件内容进行加密

孤峰 孤峰家 2023-06-15 168人阅读

一、位运算

位运算用来操作整数基本类型中的的单个bit,即二进制位。

二、位运算类型

1、“与”操作 & :输入都为1的情况下,才为1,否则为0;

2、“或”操作 | :输入都为0的情况下,才为0,否则为1;

3、“异或”操作 ^ : a^b = a’b | ab’ (a’表示非a, ~a)

解释:

当a=1,b=1时,a^b = 0;

当a=1,b=0时,a^b = 1;

当a=0,b=1时,a^b = 1;

当a=0,b=0时,a^b = 0;

三、加密原理

将特定字符串转变为一组bit型数组,将每一个bit数据和特定bit数值进行异或,产生的数组转化为字符串,这样可以起到加密的效果。而解密的操作是,将加密操作重新进行一遍,这样就还原了之前的字符串。这是位运算(异或)的一个重要特性。

四、加密与解密实例

Scanner scan = new Scanner(System.in); 

String target = scan.nextLine();

char[] arr = target.toCharArray();

for(int i=0;i< arr.length;i++){

arr = (char)(arr^200);

}

加密的字符串:arr.toString();

for(int i=0;i< arr.length;i++){

arr = (char)(arr^200);

}

解密的字符串:arr.toString();

初次讲完位运算,基本匀运算法则懂了。

最感兴趣的是运用位运算来加密。

代码如下:

#include<stdio.h> 

#include<string.h>

int **in()

{

int i,j;

int key;

char p[80]="";

char c[80]="";

char key1[80]="";

printf("input please\n");

gets(p);

printf("key please\n");

gets(key1);

key=strlen(key1);

for(i=0;p!='\0';i+=key)

{

for(j=0;j<key;j++)

{

c[j+i]=p[i+j]^key1[j];

}

}

printf("加密后:%s\n",c);

printf("请输入密钥:\n");

gets(key1);

key=strlen(key1);

for(i=0;c!='\0';i+=key)

{

for(j=0;j<key;j++)

{

p[i+j]=c[i+j]^key1[j];

}

}

printf("解密后明文:%s\n",p);

return 0;

}

转载:感谢您阅览,转载请注明文章出处“来源从小爱孤峰知识网:一个分享知识和生活随笔记录的知识小站”。

链接:使用位运算对数据或文件内容进行加密http://www.gufeng7.com/niaolang/359.html

联系:如果侵犯了你的权益请来信告知我们删除。邮箱:119882116@qq.com

标签: