Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java 异或加密_使用异或实现一个简单的加密或解密

java 异或加密_使用异或实现一个简单的加密或解密

作者头像
全栈程序员站长
发布于 2022-11-09 02:55:11
发布于 2022-11-09 02:55:11
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*
* Copyright (C) 2017, Megatron King
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.yunshouhu.bouncycastle.xor;
import android.util.Base64;
/**
* StringFog base64+xor encrypt and decrypt implementation.
*
* @author Megatron King
* @since 2018/9/2 14:34
*/
public  class xorEncrypt{
private static final String CHARSET_NAME_UTF_8 = "UTF-8";
public String encrypt(String data, String key) {
String newData;
try {
newData = new String(Base64.encode(xor(data.getBytes(CHARSET_NAME_UTF_8), key), Base64.NO_WRAP));
} catch (Exception e) {
newData = new String(Base64.encode(xor(data.getBytes(), key), Base64.NO_WRAP));
}
return newData;
}
public String decrypt(String data, String key) {
String newData;
try {
newData = new String(xor(Base64.decode(data, Base64.NO_WRAP), key), CHARSET_NAME_UTF_8);
} catch (Exception e) {
newData = new String(xor(Base64.decode(data, Base64.NO_WRAP), key));
}
return newData;
}
/**
public boolean overflow(String data, String key) {
return data != null && data.length() * 4 / 3 >= 1024;
}*/
private static byte[] xor(byte[] data, String key) {
int len = data.length;
int lenKey = key.length();
int i = 0;
int j = 0;
while (i < len) {
if (j >= lenKey) {
j = 0;
}
data[i] = (byte) (data[i] ^ key.charAt(j));
i++;
j++;
}
return data;
}
public static void main(String[] args) {
for(int i=0;i<100;i++)
{
String key="android"+i;
String dataString="java锄禾日当午,汗滴禾下土,谁知盘中餐粒粒皆辛苦";
xorEncrypt xor=new xorEncrypt();
String cipher=xor.encrypt(dataString, key);
System.out.println(cipher);
String textString=xor.decrypt(cipher, key);
if(!textString.equals(dataString))
{
System.err.println("error textString="+textString+",dataString="+dataString);
}else{
System.out.println("textString="+textString);
}
}
System.out.println("==============");
for(int i=0;i<100;i++)
{
String key="android";
String dataString="java锄禾日当午,汗滴禾下土,谁知盘中餐粒粒皆辛苦"+i;
xorEncrypt xor=new xorEncrypt();
String cipher=xor.encrypt(dataString, key);
System.out.println(cipher);
String textString=xor.decrypt(cipher, key);
if(!textString.equals(dataString))
{
System.err.println("error textString="+textString+",dataString="+dataString);
}else{
System.out.println("textString="+textString);
}
}
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185906.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月4日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
乱序+移位加密24位bmp格式图片 scala实现
前言: 关于bmp图片的格式分析:BMP 用java读写24位bmp格式图片的一篇博客:关于Java读取和编写BMP文件的总结, 正文: 乱序和移位加密都属于古典加密方法,容易被破解,本文将两种加密方式结合, 再进行多轮加密,保密性能稍微增强一点。 乱序加密: 这里只简单介绍一下列乱序加密:  设明文 m=m1 m2 ... ms,共 s 个字符,现规定每行有 n 个字符(n<s), 设 t= [s / n] , 如果n不整除s , 则明文按通用格式输出,共形成 t+1 行的 一个明文矩阵,第 t+1
Ldpe2G
2018/07/06
1.8K0
SM4加密解密
https://baike.baidu.com/item/SM4.0/3901780
bug专8
2021/02/03
3.8K2
Java使用RSA加密解密签名及校验
再来一个Base64的类,当然你也可以用commons-codec-1.9.jar
全栈程序员站长
2021/04/13
4.6K0
Java使用RSA加密解密签名及校验
Javascript中DOM技术的的简单学习
别先生
2017/12/29
1.1K0
Javascript中DOM技术的的简单学习
PHP-判断语句
1.5 判断 1.5.1 语法 单分支 if(条件){ } 双分支 if(条件){ //代码块1 }else{ //代码块2 } 多分支 if(条件){ }elseif(条件){ //注意:elseif之间没有空格 }else{ } 多路选择 switch(表达式){ case 常量: //代码块 break; case 常量: //代码块
cwl_java
2020/03/26
2.9K0
关于JSEntrypt.js加密 Java RSA解密
首先Java可以定义一个全局处理的一个类,通过实现RequestBodyAdvice来进行统一接口请求参数处理。实现RequestBodyAdvice后重写一个方法beforeBodyRead。
@派大星
2023/06/28
7350
关于JSEntrypt.js加密 Java RSA解密
Java加解密工具类
今天coding的时候需要大数据大佬对接接口,接口用的DES加密 ECB的PKCS5Padding填充方式。从 CSDN看到的都是收费的,我就搞不明白了一个工具类至于收费不,我就有点不开心了。为什么就不能有一个分享的精神,程序员何必为难程序员呢。 今天我给大家分享三个我自己常用的三个加密工具类吧 。AES、DES、MD5 AES加密解密工具类返回Base64 package cn.builder.util; import org.apache.commons.codec.binary.Base64;
猿码优创
2019/07/28
3.9K0
CSS入门级学习
css入门学习 1:认识CSS   1.1:css简介,css全称是层叠样式表,Cascading style sheets   1.2:css的作用,主要是用于定义html内容在浏览器内的显示样式
别先生
2017/12/29
1.5K0
CSS入门级学习
【HTML】HTML 标签 ⑤ ( 锚点定位 | base 标签 | 预格式化文本标签 | HTML 特殊符号 )
base 标签 的 作用是 为 HTML 页面中 所有的链接 添加 打开状态 , 该标签必须 写在 <head></head> 标签之间 ;
韩曙亮
2023/03/30
2.5K0
【HTML】HTML 标签 ⑤ ( 锚点定位 | base 标签 | 预格式化文本标签 | HTML 特殊符号 )
密码学之常见加密方式(05)
提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
海拥
2021/08/23
1.1K0
浅谈DES加密算法
一、DES加密算法介绍 1、要求密钥必须是8个字节,即64bit长度 2、因为密钥是byte[8] , 代表字符串也可以是非可见的字节,可以与Base64编码算法一起使用 3、加密、解密都需要通过字节数组作为数据和密钥进行处理 二、对称加密 DES加密算法属于对称加密。 即利用指定的密钥,按照密码的长度截取数据,分成数据块,和密钥进行复杂的移位、算数运算或者数据处理等操作,形成只有特定的密码才能够解开的数据。 加密与解密用的是同一个密钥 三、相关类 1、Cipher: Java/Android要使用任何加密
听着music睡
2018/05/18
2K0
对加密-加签的完整流程
1.架构图 2.实例代码 package com.shi.encrypt.ascii; import com.alibaba.fastjson.JSONArray; import com.aliba
用户5927264
2020/07/30
9590
Android 加密 AES
AES 加密又称对称性加密,在开发中常用于对流数据对加密,尤其是流数据在网络传输过程中,担心被泄露,AES 加密被常用于这块的校验中。下面是 AES 加密的百度百科说明解释:
全栈程序员站长
2022/08/29
1.3K0
DES和AES算法加密解密
前言:在api传递过程中或者操作cookie中的参数都是明文,很容易暴露一些用户以及私密的信息。
王念博客
2019/07/24
2.1K0
Java 加密工具类 AES , MD5 加密
import javax.crypto.*; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; /** * @author: Jack * 2019-12-03 21:56 */ public class AESUt
一个会写诗的程序员
2019/12/11
1.8K0
Android中自带的加密和解密
在当今社会信息安全越来越重要,其中最为关键的就是传输过程中的安全。这就需要一套安全可靠且有效的加密和解密算法来实现。
林老师带你学编程
2022/11/30
8660
Java解密解密工具类
JokerDJ
2023/11/27
7100
JAVA与PHP之间进行aes加密解密
用户数据应经过加密再传输,此文档为aes128加密(cbc模式)的说明 摘要算法为SHA-512
BUG弄潮儿
2022/06/30
2.8K0
java——加密、解密算法
  1. 对称加密算法: 密钥较短,破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,且对计算机性能要求也没有那么高。 优点: 算法公开、计算量小、加密速度快、加密效率高 缺点: 在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了。另外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一秘钥,这会使得收、发双方所拥有的钥匙数量巨大,密钥管理成为双方的负担。   2. 非对称加密算法: 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。 优点: 安全 缺点: 速度较慢
不愿意做鱼的小鲸鱼
2022/09/26
3.2K0
java——加密、解密算法
浅谈RSA加密算法
一、什么是非对称加密 1、加密的密钥与加密的密钥不相同,这样的加密算法称之为非对称加密 2、密钥分为:公钥,私钥    公钥:可以对外给任何人的加密和解密的密码,是公开的      私钥:通过私钥可以生成公钥,但从公钥被认为无法生成公钥(被推导出的概率小到不考虑) 3、当将要加密的内容用公钥加密的时候,只能用私钥来解密      当将要加密的内容用私钥加密的时候,只能用公钥来解密 4、公钥与私钥的关系,利用一个简单的公式来生成公钥和私钥,即非对称加密的公钥和私钥之间存在某一个公式关系 5、常见的非对称加密算
听着music睡
2018/05/18
2.1K0
相关推荐
乱序+移位加密24位bmp格式图片 scala实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档