导航:首页 > 文档加密 > xor加密字符串java

xor加密字符串java

发布时间:2022-08-20 16:18:58

java用异或运算进行加密是只适用于很短一句话的吗加密解密的程序中。打开文件输出是换行的。但是用

位异或可以加密很长,你要控制当遇到换行操作符,原样输出,之后继续加密

② 用java做实战从键盘输入字符和字符串按位异或进行加密。之后再解密

importjava.util.*;
importjava.io.*;
classTest{
publicstaticvoidmain(String[]args)throwsException{
Scannersc=newScanner(System.in);
charc=sc.next().charAt(0);
Strings=sc.next();
Stringtmp="";
for(inti=0;i<s.length();i++){
tmp+=s.charAt(i)^c;
}
System.out.println(tmp);
FileWriterfw=newFileWriter("data.txt");
fw.write(tmp);
fw.flush();
fw.close();

System.out.println("解密:");
c=sc.next().charAt(0);
sc.close();
Scanners=newScanner(newFile("data.txt"));
Stringxy="";
while(s.hasNextLine()){
xy+=s.nextLine();
}
Stringab="";
for(inti=0;i<xy.length;i++){
ab+=xy.charAt(i)^c;
}
System.out.println(ab);
}
}

③ java 位运算实现加密中为何array[i]异或的是20000将20000换成其他数字结果就全部显示问号。求解释

array[i] = (char) (array[i]^20000)的结果超过了char字符对应的ascII值,建议你吧20000改成20,或者你判断char字符对应的ascII边界值也行。

④ 用java写一个 字符串异或 的程序

privateStringtwoStringXor(Stringstr1,Stringstr2){
byteb1[]=str1.getBytes();
byteb2[]=str2.getBytes();
bytelongbytes[],shortbytes[];
if(b1.length>=b2.length){
longbytes=b1;
shortbytes=b2;
}else{
longbytes=b2;
shortbytes=b1;
}
bytexorstr[]=newbyte[longbytes.length];
inti=0;
for(;i<shortbytes.length;i++){
xorstr[i]=(byte)(shortbytes[i]^longbytes[i]);
}
for(;i<longbytes.length;i++){
xorstr[i]=longbytes[i];
}
returnnewString(xorstr);
}

⑤ 如何利用异或运算进行简单加密解密

利用“^”异或运算对字符串进行加密
思路: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!

⑥ 关于Java中的异或运算符实现加密和解密的问题

String sdd= new String(bt,0,bt.length);
// bt是数组, 0 表示从第一个开始, 即对应 bt[0]
这句意义就是 将 bt 数组的内容转化成 string ;

⑦ java将两个字符串转为十六进制进行异或的结果是多少进制的,怎么做

小猪,已解答,采纳即可

publicclassRectangle
{
publicstaticvoidmain(String[]args)
{
StringS1="0412134FFFFFFFFFF";
StringT1="00007770000200";
longsi=Long.parseLong(S1,16);
longti=Long.parseLong(T1);
longst=si^ti;
//很显然是十进制0~9
//4693090553043039415
System.out.println(st);
Stringhex=Long.toHexString(st);
//412134fe30df34b7
System.out.println(hex);
}
}

⑧ java 异或 字符串找不同 是怎么实现的

函数是运用了异或运算的特点,当两次异或同一字符的时候,他们的结果就相互抵消(等同于没有异或),所以严格说来,这个函数并不能判断两个字符串是否完全相同。他只是判断把这两个字符串,的所有字符全部统计一遍以后,是不是所有的字母都出现偶数次。如果是函数就返回0,否则就返回非0。

阅读全文

与xor加密字符串java相关的资料

热点内容
屏幕共享源码哪家比较不错 浏览:665
vb中双击命令按钮 浏览:208
服务器做了磁盘阵列怎么重装 浏览:606
逻辑加密ic卡能用吗 浏览:883
c语言代码编译器手机版 浏览:289
recovery无命令 浏览:957
想妈妈的命令 浏览:578
网站接入方式怎么填写云服务器 浏览:859
薯仔视频APP怎么看不了 浏览:550
社交软件app该怎么聊 浏览:23
pc的启动文件夹 浏览:671
文件夹压缩过程中点击取消压缩 浏览:216
顺丰app专享优惠券怎么用 浏览:667
酷狗音乐分享文件夹 浏览:826
服务器mgmt旁边的接口是什么 浏览:844
单片机发光二极管原理图 浏览:50
在北京当程序员6年 浏览:128
编译器gcc如何用 浏览:412
androidbringup 浏览:978
算法设计与分析英文版 浏览:911