java异或加密解密(java加密解密字符串)

  • 1、Java中怎么把密码加密!
  • 2、JAVA 文本文件用异或算法进行加密解密的程序代码!
  • 3、java 用^进行加密
  • 4、android,java 通用的加密解密方式有几种

通常不加密密码。而是用md5取出它的hash值。存到数据库里。验证时也用md5验证。这样管理员也看不到用户的密码。

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

public class XorExample {

public static final byte XOR_CONST = 0X12;

public static void main(String[] args) throws Exception {

File src = new File(“level1.txt”);

File dest = new File(“level2.txt”);

File dest2 = new File(“level3.txt”);

xorEn(src, dest);

xorEn(dest, dest2);

}

/**

* 异或的一个特点: a^b = c c^b = a

* 所以简单点,这里的加解密都用一个函数就行了

* @param src

* @param dest

* @throws Exception

*/

public static void xorEn(File src, File dest) throws Exception {

// 文件不存在或为文件夹就不判断了

FileInputStream fis = new FileInputStream(src);

FileOutputStream fos = new FileOutputStream(dest);

byte[] bs = new byte[1024];

int len = 0;

while ((len = fis.read(bs)) != -1) {

for (int i = 0; i len; i++) {

bs[i] ^= XOR_CONST;

}

fos.write(bs, 0, len);

}

fos.close();

fis.close();

}

}

import java.util.Scanner;

public class Test {

public static final int KEY = 8;

public static void main(String[] args) {

String str = “十点进攻”;

StringBuffer str2 = new StringBuffer(); //存储加密后的字符串

StringBuffer str3 = new StringBuffer(); //存储解密后的字符串

//加密过程

for(int i=0;istr.length();i++)

{

char c = (char)(str.charAt(i) ^ KEY);

str2.append(c);

}

//解密过程

for(int i=0;istr2.length();i++)

{

char c = (char)(str2.charAt(i) ^ KEY);

str3.append(c);

}

System.out.println(“原始 的字符串为:” + str);

System.out.println(“加密后 的字符串为:” + str2);

System.out.println(“解密后 的字符串为:” + str3);

}

}

移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如.NET和android或者iOS的打交道。为了让数据交互更安全,我们需要对数据进行加密传输。今天研究了一下,把几种语言的加密都实践了一遍,实现了.NET,java(android),iOS都同一套的加密算法,下面就分享给大家。

AES加密有多种算法模式,下面提供两套模式的可用源码。

加密方式:

先将文本AES加密

返回Base64转码

解密方式:

将数据进行Base64解码

进行AES解密

一、CBC(Cipher Block Chaining,加密块链)模式

是一种循环模式,前一个分组的密文和当前分组的明文异或操作后再加密,这样做的目的是增强破解难度.

密钥

密钥偏移量

java/adroid加密AESOperator类:

package com.bci.wx.base.util;

import javax.crypto.Cipher;

import javax.crypto.spec.IvParameterSpec;

import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;

import sun.misc.BASE64Encoder;

/**

* AES 是一种可逆加密算法,对用户的敏感信息加密处理 对原始数据进行AES加密后,在进行Base64编码转化;

*/

public class AESOperator {

/*

* 加密用的Key 可以用26个字母和数字组成 此处使用AES-128-CBC加密模式,key需要为16位。

*/

private String sKey = “smkldospdosldaaa”;//key,可自行修改

private String ivParameter = “0392039203920300”;//偏移量,可自行修改

private static AESOperator instance = null;

private AESOperator() {

}

public static AESOperator getInstance() {

if (instance == null)

instance = new AESOperator();

return instance;

}

public static String Encrypt(String encData ,String secretKey,String vector) throws Exception {

if(secretKey == null) {

return null;

}

if(secretKey.length() != 16) {

return null;

}

Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”);

byte[] raw = secretKey.getBytes();

SecretKeySpec skeySpec = new SecretKeySpec(raw, “AES”);

IvParameterSpec iv = new IvParameterSpec(vector.getBytes());// 使用CBC模式,需要一个向量iv,可增加加密算法的强度

cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);

byte[] encrypted = cipher.doFinal(encData.getBytes(“utf-8”));

return new BASE64Encoder().encode(encrypted);// 此处使用BASE64做转码。

}

// 加密

public String encrypt(String sSrc) throws Exception {

Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”);

byte[] raw = sKey.getBytes();

SecretKeySpec skeySpec = new SecretKeySpec(raw, “AES”);

IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());// 使用CBC模式,需要一个向量iv,可增加加密算法的强度

cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);

byte[] encrypted = cipher.doFinal(sSrc.getBytes(“utf-8”));

return new BASE64Encoder().encode(encrypted);// 此处使用BASE64做转码。

}

// 解密

public String decrypt(String sSrc) throws Exception {

try {

byte[] raw = sKey.getBytes(“ASCII”);

SecretKeySpec skeySpec = new SecretKeySpec(raw, “AES”);

Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”);

IvParameterSpec iv = new IvParameterSpec(ivParameter.getBytes());

cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);

byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);// 先用base64解密

byte[] original = cipher.doFinal(encrypted1);

String originalString = new String(original, “utf-8”);

return originalString;

} catch (Exception ex) {

return null;

}

}

public String decrypt(String sSrc,String key,String ivs) throws Exception {

try {

byte[] raw = key.getBytes(“ASCII”);

SecretKeySpec skeySpec = new SecretKeySpec(raw, “AES”);

Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”);

IvParameterSpec iv = new IvParameterSpec(ivs.getBytes());

cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);

byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);// 先用base64解密

byte[] original = cipher.doFinal(encrypted1);

String originalString = new String(original, “utf-8”);

return originalString;

} catch (Exception ex) {

return null;

}

}

public static String encodeBytes(byte[] bytes) {

StringBuffer strBuf = new StringBuffer();

for (int i = 0; i bytes.length; i++) {

strBuf.append((char) (((bytes[i] 4) 0xF) + ((int) ‘a’)));

strBuf.append((char) (((bytes[i]) 0xF) + ((int) ‘a’)));

}

return strBuf.toString();

}

原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/126804.html

汽车小知识 小米SU7 今日油价 油耗计算器 电耗计算器 购置税计算器 贷款计算器 保险计算器 交通违章代码 体育新闻
(0)
简单一点的头像简单一点
上一篇 2024-10-03
下一篇 2024-10-03

相关推荐

  • 深入理解TypeScript抽象类

    一、什么是抽象类 抽象类是一种特殊的类,它不能被直接实例化,而是用来被继承的。它的定义使用abstract关键字,并且至少包含一个抽象方法。抽象方法需要在子类中被实现。 abstr…

    编程 2024-10-03
  • PyCharm2020激活码详解

    PyCharm2020是一款专业的Python IDE,它为Python程序员提供了全面的工具、功能和框架,可用于加快Python开发的速度。PyCharm有两个版本,即PyCha…

    编程 2024-11-02
  • C# System.Threading.Timer:多方位详解

    一、基本概念与使用 1、System.Threading.Timer是什么 System.Threading.Timer是用于在指定时间间隔内执行指定的代码的类。它是System.…

    编程 2024-11-04
  • php中正则匹配数字(php 正则匹配字符串)

    本文目录一览: 1、php正则如何在一个字符串中匹配一个数字 2、php正则 匹配 数字0-10 3、PHP正则匹配数字问题 php正则如何在一个字符串中匹配一个数字 $str_a…

    编程 2024-10-03
  • 快速提高网页流量的技巧:使用putNextEntry的正确姿势

    随着互联网的发展,网站流量成为了衡量一个网站影响力的重要指标之一。对于任何一个网站来说,如何提高流量就成为了一个非常重要的问题。在这篇文章中,我们将会介绍使用putNextEntr…

    编程 2024-11-02
  • 加密php文件,php加密教程

    本文目录一览: 1、如何对PHP文件进行加密 2、php 怎么用zend加密 3、php源码怎么加密 如何对PHP文件进行加密 超级加密3000就可以 1、下载安装超级加密3000…

    编程 2024-10-04
  • Python Dictionary:快速解析和管理数据

    一、什么是字典? 1、Python字典是一种可变容器,用于存储的值是键-值对(key-value pairs)。点方括号({})被用来创建字典。 #创建一个空字典 my_dict …

    编程 2024-10-04
  • cmjsw2qxccvmuq的简单介绍

    1、急.我的卡巴斯基杀毒软件的使用期限快到了,谁能帮我延长啊?谢了 2、求卡巴基斯6。0的激活码 3、请高手~~给个卡巴斯基6.0的激活码!谢谢.! 4、卡巴斯基6.0激活码 无数…

    编程 2024-10-03
  • CentOS8重启网卡详解

    一、CentOS8重启网卡命令 当我们需要重启CentOS8网卡时,我们可以选择在命令行中输入以下命令: sudo systemctl restart NetworkManager…

    编程 2024-10-04
  • 蒙特卡罗c语言,蒙特卡洛c语言

    本文目录一览: 1、C语言 用蒙特卡洛法求圆周率 帮忙修改一下程序 2、c语言用蒙特卡洛方法求定积分 大佬帮忙看看哪里不对 3、c语言,蒙特卡洛方法求pi。 4、c语言中用蒙特卡洛…

    编程 2024-10-03

发表回复

登录后才能评论