① 异或加密与解密(C语言)注释
异或运算有一个特性
若
c = a xor b
那么
a = c xor b
根据这样的特性,你有一个信息a,然后你产生一个密码b,把它和a异或运算之后就变成了c。这就是一种加密,解密的时候,把c重新和b异或运算,就变回了a。
顺带说一下,异或是很弱的加密方法,很容易被破解的。
② 关于java中的异或运算符实现加密和解密的问题
String sdd= new String(bt,0,bt.length);
// bt是数组, 0 表示从第一个开始, 即对应 bt[0]
这句意义就是 将 bt 数组的内容转化成 string ;
③ 一个基于异或的加密算法
大哥……你连流程图都画出来了……代码还不懂写……另外这个也不难吧~~就异或操作而已…………最简单的加密的了,小数那里你把它扩大再提取出来即可
……实在不行再帮你看看~~~~最好自己先尝试做~
==================================================================
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//参数一:源文件 参数二:目标文件
//例如: XorProject.exe aa.txt bb.txt
int main( int argc , char* argv[] )
{
ifstream inf;
ofstream ouf;
string param;
if ( argc < 3)
{
cerr<<"缺少参数"<<endl;
return -1;
}
inf.open( argv[1] , ios::in | ios::binary );
ouf.open( argv[2] , ios::out | ios::binary | ios::trunc );
if ( !inf.is_open() || !ouf.is_open() )
{
cerr<<"打开文件失败"<<endl;
return -2;
}
double x0 = 0.0;
double u = 0.0;
cout<<"请输入u的值:";
cin>>u;
cout<<"请输入x0的值:";
cin>>x0;
double xn = x0;
int i;
for ( i = 0; i < 1000; i++ )
{
xn = u * xn * ( 1 - xn );
}
inf.seekg( 0 , ios::end );
unsigned long file_size = inf.tellg();
unsigned long p = 0;
inf.seekg( 0 , ios::beg );
while ( p < file_size )
{
unsigned char c;
inf.read( (char*)&c , 1 ); //读1个字节
int Y = ((int)(xn * 10000000)) % 1000; //取5 6 7位
int Z = Y % 256;
c ^= Z;
ouf.write( (char*)&c , 1 ); //写入加密后的1字节
for ( i = 0; i < 5; i++ )
{
xn = u * xn * ( 1 - xn );
}
p++;
}
inf.close();
ouf.close();
return 0;
}
代码比较简单,另外要注意一下,像你那样1000次迭达,感觉用处不太大,反而会导致xn的值接近0,所以你在输入x0的时候必须要输入一个接入1的数,否则经过这么多次迭代后xn就变成了0了,高精度运算也没用,5、6、7位都已经是0了,意义不太大
④ 谁可以给我介绍下所谓的8位密匙进行异或者操作
就是按位操作一下,密匙既常数+操作
解密为常数+反向操作
⑤ 如何利用异或运算进行简单加密解密
利用“^”异或运算对字符串进行加密
思路:1.先创建字符串输入的Scanner;
2.通过char[] array = password.toCharArray();// 获取字符数组;
3.遍历字符数组,按目前理解要用到遍历:数组所有元素进行访问,比如你要输出数组里所有的信息时,就要用到
4.进行异或运算
按位做“异或”运算是:位值相同得1,不同得0
例如:
< 加密过程:>
原解释的二进制为 1 1 0 0 ----原文
设定的key的二进制为 0 1 1 0 ----密匙
两者做“异或”结果为 0 1 0 1 ----密文
< 解密过程:>
0 1 0 1----密文
0 1 1 0----密匙
两者“异或”就得到了原文 1 1 0 0 ----原文
详细代码:
package com.lixiyu;
import java.util.Scanner;
public class Example {
public static void main(String[] args){
Scanner sca=new Scanner(System.in);
System.out.println("请输入一个英文字符串或解密字符串");
String line=sca.nextLine();//获取用户输入信息
char[] array=line.toCharArray();//获取字符数组
for (int i=0;i<array.length;i++){//历遍字符数组
array[i]=(char) (array[i]^20000);//对数组每个元素进行异或运算
}
System.out.println("加密解密结果如下:");
System.out.println(new String(array));//输出密钥
}
}
异或运算:
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
字符'A' 的ASCII编码为65 : 00000000 01000001
取整数7 : 00000000 00000000 00000000 00000111
XOR运算后 : 00000000 00000000 00000000 01000110
简单加密算法代码如下 :
public class Test {
public static final int KEY = 7;
public static void main(String[] args) {
String str = "Hello World!";
StringBuffer str2 = new StringBuffer(); //存储加密后的字符串
StringBuffer str3 = new StringBuffer(); //存储解密后的字符串
//加密过程
for(int i=0;i<str.length();i++)
{
char c = (char)(str.charAt(i) ^ KEY);
str2.append(c);
}
//解密过程
for(int i=0;i<str2.length();i++)
{
char c = (char)(str2.charAt(i) ^ KEY);
str3.append(c);
}
System.out.println("原始 的字符串为:" + str);
System.out.println("加密后 的字符串为:" + str2);
System.out.println("解密后 的字符串为:" + str3);
}
}
输出:
原始 的字符串为:Hello World!
加密后 的字符串为:Obkkh'Phukc&
解密后 的字符串为:Hello World!
⑥ 异或加密介绍和原理
最简单的异或加密解密,特点是加密解密算法相同:下面的可以直接测试。
private void button1_Click(object sender, EventArgs e)
{
byte key = 123;
Text = encryptDecryptStr(textBox1.Text, key);
}
private string encryptDecryptStr(string p, byte key)
{
byte[] bs = Encoding.Default.GetBytes(p);
for (int i = 0; i < bs.Length; i++)
{
bs[i] = (byte)(bs[i] ^ key);
}
return Encoding.Default.GetString(bs);
}
private void button2_Click(object sender, EventArgs e)
{
byte key = 123;
button2.Text = encryptDecryptStr(Text, key);
} 上面是一个C#的异或加密算法
⑦ C语言 异或加密
C语言异或加密实现的原理为,将任意值,与相同值两次异或后,结果与原值相同。所以可以通过将源数据与一个固定的值(秘钥key)异或后,得到密文,然后将密文再次与秘钥异或,得到原文。这样就实现了异或加密及解密。
C语言中的异或是一种按位操作的计算,其计算原理为,操作数对应位上的值相同,则结果位上值为0,否则为1.异或的运算符号为^,于是真值表如下:
0^0=0
0^1=1
1^0=1
1^1=0
这样区分源数据和秘钥值,有如下四种可能:
0^0=0
0^0=0
0^1=1
1^1=0
1^0=1
1^0=1
1^1=0
0^1=1
以上是将一个值,用另一个值连续异或两次后的计算过程,可以看到,最终的值与原始值是相同的。这就是异或加密的基础原理。
⑧ 设计一种很难被破解的异或加密方法
不会哦。比如我有一个大小为1000字节的文本文件,我先产生了4个随机数,100,4,200,5
然后先取文件100字节处的数据然后与下一个字节也就是101位置的数据异或,然后取加密后的数据继续与下个字节XOR,到文件尾后转到文件头继续,直到完全把整个文件异或加密4遍,也就是4000次XOR,同样再取文件200字节偏移处数据进行5000次XOR,解密者只需知道4个随机数然后按步骤反过来XOR就还原为原文本文件,我想知道不知道4个随机数的情况下怎样破解,穷举吗,难度大不大,有什么更好的异或加密方案,如用一张jpg照
⑨ 什么是异或加密
异或的特点是原始值经过两次异或某一个数后会变成原来的值,所以有时利用这个特性来进行加密,加密端把数据与一个密钥进行异或操作,生成密文。接收方收到密文后利用加密方提供的密钥进行再次异或操作就能得到明文。loop是汇编语言中的循环指令。它对cx进行减1,如果不为0则跳到循环首部继续执行循环体。如果为0,执行loop的下一条指令。
⑩ C语言异或加密这个编程怎么写
字符A 异或 字符C 在c语言里这样写:
char val = 'A' ^ 'C';