java 异或加密 字符串_Java 字符串的加密与解密
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
为了保证程序的安全,经常需要用到数据加密的方法。Java 中提供了专门用于加密运算的类和接口。
除了使用加密类和接口外,还可以通过多种方式实现字符串的加密。其中常用的就是获取字符串的字节数组,之后对字节数组中的每个字节都进行运算,得到新的内容,这时所获得的字符串与原字符串将不相同,以此达到加密的效果;解密时再将加密字符串进行相反的运算,这样即可得到原字符串。
如何通过数据运算实现字符串的加密和解密:
代码:
(1)创建一个静态的secret () 方法,在该方法中传入两个参数,首先将需要加密的内容转换为字节数组,接着遍历字节数组中的内容,在for语句中通过异或运算进行加密,然后将加密后的字符串保存到newresult变量中。最后返回newresult 变量的值。
publicstatic String secret (Stringvalue, char secret)
{
byte[] bt=value.getBytes(); //将需要加密的内容转换为字节数组
for(int i=0;i
{
bt[i]=(byte)(bt[i]^(int)secret); //通过异或运算进行加密
}
String newresult=new String(bt,0,bt.length); //将加密后的字符串保存到 newresult变量中
return newresult;
}
(2)在main() 方法中添加代码,接收用户在控制台输入的内容并输出,然后调用secret() 方法对字符串分别进行加密和解密,并将加密和解密后的内容输出。
publicstaticvoid main(String[] args)
{
Scanner scan=new Scanner(System.in);
char secret='8'; //加密文字符
System.out.println("请输入您想加密的内容:");
String pass=scan.next();
System.out.println("原字符串内容:"+pass);
String secretResult= secret (pass,secret);
System.out.println("加密后的内容:"+ secretResult);
String uncryptResult= secret (secretResult,secret);
System.out.println("解密后的内容:"+uncryptResult);
}
运行结果:
补充:
异或运算:
原理:如果一个字符(或数值)A与一个数值B进行异或运算得到C,则再用C和B进行以后运算就可以还原得到A。
异或运算是基本bool运算/位运算1的中的一种, C语言里用^表示,此处用⊕ \oplus⊕表示。
运算规则为,相同为0,不同为1:
1⊕1=0
0⊕0=0
0⊕1=1
1⊕0=1
java 异或加密 字符串_Java 字符串的加密与解密相关推荐
- java des 加密 字符串_Java使用DES加密字符串
Java使用DES加密字符串 编号:A3GS_TJ20100108004 描述: 本文讲述了如何在Java下使用DES加密字符串. 例子: NO 技术实现: 导入包: import java.io.U ...
- java字符替换函数示例_Java字符串替换函数replace()用法解析
Java字符串替换函数replace()用法解析 这篇文章主要介绍了Java字符串替换函数replace()用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的 ...
- java 千分位格式话_Java 字符串小数转成千分位格式
java中需要将字符串小数转成千分位格式显示,如下代码,原理是使用正则表达式对整数位进行千分位格式化,然后小数位拼接起来.为什么要这么麻烦的处理,是因为在android程序中使用的NumberForm ...
- java按特殊标志截取_java 字符串分割处理split及特殊符号
String类型的对象在 用split()方法进行字符分割的时候常常会遇到用特殊字符进行分割的情况,看JDK知道split()实际上是用的正则实现的分割,当遇到一些用特殊 字符作为分割标志的时候,不使 ...
- java连接字符串_Java字符串连接运算符
Java字符串连接运算符 在java语言中所有的字符串都使用半角双引号括起来的,字符串属于引用数据类型,不属于基本数据类型的范畴,怎么定义一个字符串的变量呢?例如:String name = &quo ...
- java 按位置格式化字符串_Java字符串格式化,{}占位符根据名字替换实例
我就废话不多说了,大家还是直接看代码吧~ import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import j ...
- java 文件转换字符串_java字符串文件互相转换
Java字符串与文件的互转 Java中有时候需要读取一个文本类的文件,将其转换为字符串,然后做进一步处理.Java中没有现成的API方法,自己手动实现一个,大家来分享. 一.字符串转换为文件 /** ...
- java string类型详解_Java字符串类型详解
Java 字符串类主要有String.StringBuffer.StringBuilder.StringTokenizer 1.字符串类型底层都是使用char数组进行实现. 2.从jdk1.7以后,S ...
- java字符串_Java字符串
java字符串 Java String is one of the most widely used class. Java String class is defined in java.lang ...
最新文章
- Ubuntu 14.04上使用CMake编译MXNet源码操作步骤(C++)
- 计算机类专计算机网络基础与应用,2016年秋季学期计算机专业《计算机网络基础(专)》第一次语音答疑.ppt...
- python怎么画简单图片-小白艰难的Python图像的绘制
- C# 集合交、并、差、去重,对象集合交并差
- 强大的DataGrid组件[13]_字段过滤(Filter)——Silverlight学习笔记[21]
- TypeScript strictness - 严格语法检查
- DC/DC电源模块是什么?有何特点
- html 字幕飘动效果,html 滚动字幕 制作滚动字幕效果 参数
- BEGINNING SHAREPOINT#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 站点设置
- NHibernate学习--初识NHibernate
- laravel redis_php session 存储到redis里
- (数据挖掘-入门-2)相似度衡量的方法
- 对于spring中事务@Transactional注解的理解
- 考虑购买的 DELL 配置
- 移动产品设计书籍推荐
- cogs 1695. 梦游仙境
- B树中的M阶是什么含义?
- 洛谷刷题笔记5.p1116 车厢重组
- 微信/钉钉电脑端登录后手机端不再提醒
- 微信设置“种草昵称”,个性有意思,来看看!
热门文章
- L2-016 愿天下有情人都是失散多年的兄妹 (25 分)
- 虎牙SRE谈可观测:如何做到比用户和老板更早发现业务异常?
- Oracle EBS NETSUITE,OracleCloud、NetSuite对比研究
- 用shader做水波纹效果
- 费了九牛二虎之力搞到的python精选库,不看会后悔
- 彻底理解hostname---四种方法修改hostname值
- EM的意思是“Expectation Maximization
- 反射讲解,有错误的请见谅。
- execl、execle、execlp、execv、execve和execvp函数
- 2019年支付宝优惠:免费或0.6元可购一张电子公交5折月卡