Java中使用异或运算符实现加密字符串
通过异或运算符号与一个指定的值进行异或运算,从而改变字符串每个字符的值,这样就可以得到加密后的字符串。
import java.util.Scanner; public class Encypt { public static void main(String args[]){ Scanner scan = new Scanner(System.in); System.out.println("请输入一个英文字符串或解密字符串:"); String password = scan.nextLine(); //获取用户输入 char[] array = password.toCharArray(); //获取字符数组 for(int i=0;i<array.length;i++) //遍历字符数组 { array[i]=(char)(array[i]^20000); //对每个数组元素进行异或运算 } System.out.println("加密或解密结果如下:"); System.out.println(new String(array)); } }
输出结果:
请输入一个英文字符串或解密字符串: www.sohu.com 加密或解密结果如下: 乗乗乗与乓乏么乕与乃乏乍
总结:
位运算可以实现很多高级,高效的运算。比如说加密,乘法中的n次方就是右移n位,速度还快。
相关推荐
-
整理Java编程中常用的基本描述符与运算符
描述符 描述符是你添加到那些定义中来改变他们的意思的关键词.Java 语言有很多描述符,包括以下这些: 可访问描述符 不可访问描述符 应用描述符,你可以在类.方法.变量中加入相应关键字.描述符要先于声明,如下面的例子所示(斜体): public class className { // ... } private boolean myFlag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42; p
-
java中关于移位运算符的demo与总结(推荐)
首先,移位运算符有三种,其操作类型只支持:byte / short / char / int和long五种. << 左移运算符,表示将左边的操作数的二进制数据向左移动*位,移动后空缺位以0填充,多余位舍弃.(等同于乘2的n次方) >> 右移运算符,二进制数据向右移动*位,就在其二进制数据后抹掉几位?(这里还不错定,但个人理解是这样的)(等同于除2的n次方) >>> 无符号右移运算符,不管移动前最高位是0还是1,右移后左侧产生的空位部分都以0来填充. 下面我们借一个
-
浅谈Java变量赋值运算符及相关实例 原创
Java程序中,需要进行大量的计算,所以要使用到运算符号,下面来给大家说明Java赋值运算符如何运用. 赋值运算符以符号"="表示,它是一个二元运算符(对两个操作数作处理),其功能是将右方操作数所含的值赋给左方操作数.例如: int a = 100; 该表达式是将100赋值给变量 a .左方的操作数必须是一个变量 ,而右边的才做书则可以是任何表达式,包括变量(如 a .number).常量(123.'book').有效表达式(如55*66). 1:使用赋值运算符为变量赋
-
Java用三元运算符判断奇数和偶数的简单实现
创建一个类,在该类的主方法中创建标准输入流的扫描器对象,提示用户输入一个整数,并通过扫描器的方法来接受这个整数,然后通过三元运算符判断该数字与2的余数,如果余数为0,说明其是偶数,否则是奇数. 复制代码 代码如下: import java.util.Scanner;public class ParityCheck { public static void main(String[] args){ System.out.println("请输入一个整数:");
-
Java语法基础之运算符学习笔记分享
一.运算符 运算符包括下面几种: 算术运算符赋值运算符比较运算符逻辑运算符位运算符三目运算符 最不常用的是位运算符,但也是最接近计算机底层的. 1.算术运算符 (1)+的几种用法:加法.正数.字符串连接符 (2)除法的时候要注意一个问题:整数相除,只能得到整数.要想得到小数,可以将数据自身*1.0,即将数据自身先转换为浮点型. 2.赋值运算符 符号 = += -= *= /= %= 注:=为基本的赋值运算符,其他的为扩展的赋值运算符 面试题: (1)short s=1, s = s+1; (2)
-
Java运算符>、>>、>>>三者的区别
>表示大于,如:if(a>b)...结果是boolean类型 >>表示带符号右移,如:int i=15; i>>2的结果是3,移出的部分将被抛弃. 转为二进制的形式可能更好理解,0000 1111(15)右移2位的结果是0000 0011(3),0001 1010(18)右移3位的结果是0000 0011(3). >>>无符号右移: 按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零.对于正数来说和带符号右移相同,对于负数来
-
Java中使用异或运算符实现加密字符串
通过异或运算符号与一个指定的值进行异或运算,从而改变字符串每个字符的值,这样就可以得到加密后的字符串. import java.util.Scanner; public class Encypt { public static void main(String args[]){ Scanner scan = new Scanner(System.in); System.out.println("请输入一个英文字符串或解密字符串:"); String password = scan.ne
-
java中的异或问题代码解析
java的位运算符中有一个叫异或的运算符,用符号(^)表示,其运算规则是:两个操作数的位中,相同则结果为0,不同则结果为1.下面看一个例子: public class TestXOR{ public static void main(String[] args){ int i = 15, j = 2; System.out.println("i ^ j = " + (i ^ j)); } } 运行结果是:i^j=13. 分析上面程序,i=15转成二进制是1111,j=2转成二进制是00
-
java 中DH的方式实现非对称加密的实例
java 中DH的方式实现非对称加密的实例 实现代码: package com.sahadev; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.spec.X509Enco
-
java 中RSA的方式实现非对称加密的实例
java 中RSA的方式实现非对称加密的实例 RSA通俗理解: 你只要去想:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密:同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证. 实现代码: package com.sahadev; import java.security.KeyFactory; import java.security.KeyPair; import java.se
-
vue项目中 使用 pako.js 解密 gzip加密字符串的代码详解
前言 今天跟后台对接一个接口,接受到一个加密的值,说是通过gzip加密过的,然后就蒙蔽了, 赶紧上百度找了一下资料,通过一篇文章(原文在底部)发现有个js库可以解密,就下载轻松解密了 实现代码 poko.js可至Github下载 https://github.com/nodeca/pako or npm install pako import pako from 'pako' // 一个是加密:window.btoa(),一个是解密:window.atob() function decode(e
-
vue中使用 pako.js 解密 gzip加密字符串的方法
前言 今天跟后台对接一个接口,接受到一个加密的值,说是通过gzip加密过的,然后就蒙蔽了, 赶紧上百度找了一下资料,通过一篇文章(原文在底部)发现有个js库可以解密,就下载轻松解密了 实现代码 poko.js可至Github下载 https://github.com/nodeca/pako or npm install pako import pako from 'pako' // 一个是加密:window.btoa(),一个是解密:window.atob() function decode(
-
C++中的异或运算符^的使用方法
C++中^运算表示的是二进制的异或运算2^4=6010^100=110 使用该运算可以实现无中间变量两数字的兑换 下面的例子实现a和b的置换 a=2: b=4: a=a^b; b=a^b; a=a^b; 异或^是一个非常重要的运算符,大量问题可以利用异或的特点找到解决方案,尤其是在各大公司的面试题中.异或绝对是一个关键的运算符.
-
Java中使用异或语句实现两个变量的互换
一般实现两个变量之间的互换要用第三个变量,这样做可以,但创建新变量,增加了系统开销.如果要交换的变量时两个整数型变量,可以用更高效的方法.例如:^(异或)操作,举例如下: import java.util.Scanner; public class VariableExchange { public static void main(String args[]){ Scanner scan = new Scanner(System.in); System.out.println("请输入第一个整
-
辨析Java中的String与StringBuffer及StringBuilder字符串类
1 String String:字符串常量,字符串长度不可变. 2 StringBuffer StringBuffer:字符串变量(Synchronized,即线程安全).如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法. Java.lang.StringBuffer线程安全的可变字符序列.在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容.可将
-
Java中ArrayList去除重复元素(包括字符串和自定义对象)
1.去除重复字符串 package com.online.msym; import java.util.ArrayList; import java.util.Iterator; @SuppressWarnings({ "rawtypes", "unchecked" }) public class Demo1_ArrayList { public static void main(String[] args) { ArrayList list = new Array
随机推荐
- Python使用shelve模块实现简单数据存储的方法
- WinXP自动开机登陆WoW bat实现
- Windows Server 2003 R2 Beta 2将公测
- ASP.NET生成图形验证码的方法详解
- 探讨PHP中this,self,parent的区别详解
- php 常用类汇总 推荐收藏
- Docker容器中文乱码(修改docker容器编码格式)的解决方案
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- JavaScript使用readAsDataURL读取图像文件
- Ruby中常用的字符串处理函数使用实例
- vbs之自动安装驱动程序
- jquery实现页面图片等比例放大缩小功能
- jQuery获取复选框被选中数量及判断选择值的方法详解
- VBS教程:函数-Int、Fix 函数
- 详解Nginx实战之让用户通过用户名密码认证访问web站点
- .net2.0+ Winform项目实现弹出容器层
- PHP获取数组中重复最多的元素的实现方法
- Centos系统下“无法打开并写入文件”问题的解决
- c++初级并查集知识点总结
- C#编写控制台程序纸牌游戏