利用"^"异或运算对字符串进行加密
思路:1.先创建字符串输入的Scanner;
按位做"异或"运算是:位值相同得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;iarray.length;i◆◆){//历遍字符数组
}
System.out.println("加密解密结果如下:");
System.out.println(new String(array));//输出密钥
异或运算:
①. ^ 1 = 0
①. ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
XOR运算后 : 00000000 00000000 00000000 01000110
简单加密算法代码如下 :
public class Test {
public static void main(String[] args) {
String str = "Hello World!";
//加密过程
for(int i=0;istr.length();i◆◆)
{
char c = (char)(str.charAt(i) ^ KEY);
//解密过程
System.out.println("原始 的字符串为:" ◆ str);
输出:
原始 的字符串为:Hello World!
加密后 的字符串为:Obkkh'Phukc
解密后 的字符串为:Hello World!
①.、按位或:如果两个相应的二进制位有一个为1,则该结果为1,否则为0.
扩展资料:
注意事项:
①.、如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算.
"" 按位与运算
按位与运算符""是双目运算符.其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位均为1时,结果位才为1,否则为0.参与运算的数以补码方式出现.
00000001 (1的二进制补码)
php
echo sprintf("%b", $a$b);
"|" 按位或运算
按位或运算符"|"是双目运算符.其功能是参与运算的两数各对应的二进位相或.只要对应的二个二进位有一个为1时,结果位就为1.参与运算的两个数均以补码出现.
00001001
|00000101
echo sprintf("%b", $a|$b)."\n"; //二进制
echo sprintf("%d", $a|$b)."\n"; //十进制
"^" 按位异或运算
^00000101
echo sprintf("%b", $a^$b)."\n"; //二进制
echo sprintf("%d", $a^$b)."\n"; //十进制
"~" 求反运算
求反运算符~为单目运算符,具有右结合性.其功能是对参与运算的数的各二进位按位求反.
~(0000000000001001)结果为:1111111111110110
echo sprintf("%b", ~$a)."\n"; //二进制
"〈〈" 左移运算
左移运算符""是双目运算符.其功能把" "左边的运算数的各二进位全部左移若干位,由""右边的数指定移动的位数,高位丢弃,低位补0.
echo sprintf("%d", $temp)."\n"; //十进制
"" 右移运算
右移运算符""是双目运算符.其功能是把" "左边的运算数的各二进位全部右移若干位,""右边的数指定移动的位数.
应该说明的是,对于有符号数,在右移时,符号位将随同移动.当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定
①.:"按位与"运算符()用法是如果两个相应的二进制位都为1,则该位的结果值为1否则为0.00=0,10=0,11=1
0,10=1,11=1
对,这是"^" 按位异或运算
按位异或运算符"^"是双目运算符.其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1,反之结果为0;
①.100和1001
--------------------------
运算过程 :从左到右
第一位都是1 那么得 0
第二位相异 得 1
第三位都是0 得 0
第四位相异 得 1
那么结果就是0101
异或一下可求出.
function?showXor($a,?$b){
$c=$a^$b;
printf('%x?xor?%x?=?%x?br/',$a,$c,$b);
以上就是土嘎嘎小编为大家整理的php按位异或运算相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!