在工作中经常遇到需要加密、解密的场景。例如用户的手机号等信息,在保存到数据库的过程中,需要对数据进行加密。取出时进行解密。

public class DEStool {

    private String sKey;

    public DEStool() {
//默认构造函数提供默认密钥
sKey = "des@#$12";
} public DEStool(String securityKey) {
if (securityKey.length() < ) {
throw new IllegalArgumentException("密钥长度至少8位");
}
this.sKey = securityKey;
} private Cipher makeCipher() throws Exception{
return Cipher.getInstance("DES");
} private SecretKey makeKeyFactory() throws Exception{
SecretKeyFactory des = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = des.generateSecret(new DESKeySpec(sKey.getBytes()));
return secretKey;
} public String encrypt(String text) throws Exception{
Cipher cipher = makeCipher();
SecretKey secretKey = makeKeyFactory();
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return new String(Base64.encodeBase64(cipher.doFinal(text.getBytes())));
} public String decrypt(String text) throws Exception{
Cipher cipher = makeCipher();
SecretKey secretKey = makeKeyFactory();
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return new String(cipher.doFinal(Base64.decodeBase64(text.getBytes())));
} public static void main(String[] args) {
DEStool tool = new DEStool("nice1234");
String content = "中国";
System.out.println("原文内容:"+content);
String encrpt = null;
try {
encrpt = tool.encrypt(content);
} catch (Exception e) {
e.printStackTrace();
} System.out.println("加密后:"+encrpt + ", 长度=" + encrpt.length()); String descript =null; try {
descript = tool.decrypt(encrpt);
} catch (Exception e) {
e.printStackTrace();
} System.out.println("解密后:" + descript);
}
}

java中加密解密工具类的更多相关文章

  1. Base64加密解密工具类

    使用Apache commons codec类Base64进行加密解密 maven依赖 <dependency> <groupId>commons-codec</grou ...

  2. JAVA中封装JSONUtils工具类及使用

    在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作.但是我们更习惯将其进一步封装,达到更好的重用. ...

  3. Java 中的并发工具类

    Java 中的并发工具类 CountDownLatch public class JoinCountDownLatchTest { public static void main(String[] a ...

  4. Java AES加密解密工具 -- GUI 、在线传输文件

    原理 对于任意长度的明文,AES首先对其进行分组,每组的长度为128位.分组之后将分别对每个128位的明文分组进行加密. 对于每个128位长度的明文分组的加密过程如下:     (1)将128位AES ...

  5. java中常用的工具类(一)

    我们java程序员在开发项目的是常常会用到一些工具类.今天我汇总了一下java中常用的工具方法.大家可以在项目中使用.可以收藏!加入IT江湖官方群:383126909 我们一起成长 一.String工 ...

  6. .Net(c#)加密解密工具类:

    /// <summary> /// .Net加密解密帮助类 /// </summary> public class NetCryptoHelper { #region des实 ...

  7. 加密解密工具类(Java,DES)

    一个Java版的DES加密工具类,能够用来进行网络传输数据加密,保存password的时候进行加密. import java.security.Key; import java.security.sp ...

  8. java加密解密工具类

    package com.founder.mrp.util; import java.nio.charset.StandardCharsets; import java.security.Key; im ...

  9. java 加密解密工具类(实用!!!)

    最近发现了一个加密解密的好例子,很方便使用,可以作为平时开发的工具集,记录一下. package com.sh.springboottdemo2.util; import com.sun.org.ap ...

随机推荐

  1. 用 C# 做人脸检测(基于EmguCV)

    c#datagridmatlab人脸识别图像处理path 下载源码 准备工作(必须) 下载  EmguCV 傻瓜安装后,把 bin 目录添加到环境变量里去,比如安装在 X:\EmguCV\ 目录下,就 ...

  2. pm2-web

    A web based monitor for PM2. Multiple hosts With the release of 0.11 pm2 no longer uses TCP sockets ...

  3. POJ 1470 Closest Common Ancestors LCA题解

    本题也是找LCA的题目,只是要求多次查询.一般的暴力查询就必定超时了,故此必须使用更高级的方法,这里使用Tarjan算法. 本题处理Tarjan算法,似乎输入处理也挺麻烦的. 注意: 由于查询的数据会 ...

  4. Model工具

    Sybase PowerDesigner - 一个高端数据建模工具.你可以下载一个45天试用版. ERWin - 一个高端数据建模工具.可下载试用版. Rational Rose Enterprise ...

  5. mock的概念

    1 现有的单元测试框架单元测试是保证程序正确性的一种有效的测试手段,对于不同的开发语言,通常都能找到相应的单元框架. 借助于这些单测框架的帮助,能够使得我们编写单元测试用例的过程变得便捷而优雅.框架帮 ...

  6. 定制NSLog便于打印调试

    定制NSLog便于打印调试 本人之前从事过嵌入式开发,对于打印调试比较在行,现分享定制的NSLog以及教大家如何使用. 源码下载地址  https://github.com/YouXianMing/Y ...

  7. telnet用法 测试端口号

    Telnet是进行远程登录的标准协议和主要方式它为用户提供了在本地计算机上完成远程主机工作的能力.可以用telnet命令来测试端口号是否正常打开还是关闭状态. 工具/原料 电脑 cmd命令 方法/步骤 ...

  8. Ping用法大全

              Ping是典型的网络工具.Ping可以辨别网络功能的某些状态. 这些网络功能的状态是日常网络故障诊断的基础.特别是Ping可以识别连接的二进制状态(也就是是否连通).可是,这仅仅是 ...

  9. iOS:分组的表格视图UITableView,可以折叠和展开

    虽然表格视图可以分组,但是如果分组后,每一行的内容太多,往后翻看起来比较的麻烦.为了解决这个麻烦,可以将分组的行折叠和展开.折叠时,行内容就会隐藏起来:展开时,行内容就会显示出来. 折叠时: 展开后: ...

  10. django 实现上传文件功能

    需求:自己写一个文件上传功能 代码: urls.py from django.conf.urls import url from django.contrib import admin from ap ...