下面是代码的实现:

package com.smt.cipher.symmetry;

import java.nio.charset.Charset;
import java.security.SecureRandom;
import java.util.Base64; import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey; /**
* DES 工具
* @author ZHANGYUKUN
*
*/
public class AESUtil {
public static final String ENCODING = Charset.defaultCharset().name(); /**
* 加密
* @param data 原文
* @param cipherStr 秘钥字符字符串(8的倍数)
* @return
*/
public static String encrypt( String content , String secretkeyStr ) {
String rt = null;
try {
byte[] data = getDESCipher(secretkeyStr, Cipher.ENCRYPT_MODE ).doFinal( content.getBytes(ENCODING) );
rt = new String(Base64.getEncoder().encode(data), ENCODING);
} catch (Exception e) {
e.printStackTrace();
}
return rt;
} /**
* 解密
* @param data 解密
* @param cipherStr 秘钥字符串(8的倍数)
* @return
*/
public static String descrypt(String data , String secretkeyStr) {
String rt = null;
try {
byte[] cipher = getDESCipher(secretkeyStr, Cipher.DECRYPT_MODE ).doFinal( Base64.getDecoder().decode( data.getBytes() ) );
rt = new String( cipher,ENCODING );
} catch (Exception e) {
e.printStackTrace();
}
return rt;
} /**
* 得到密码
* @param secretkeyStr
* @param mode
* @return
*/
public static Cipher getDESCipher( String secretkeyStr,int mode ) {
int remainder = secretkeyStr.length()%8;
if( remainder != 0 ) {
throw new RuntimeException("秘钥字符串必须是8的倍数");
} try {
KeyGenerator keygen =KeyGenerator.getInstance("AES");
keygen.init(128, new SecureRandom(secretkeyStr.getBytes(ENCODING)));
SecretKey secretKey=keygen.generateKey(); Cipher cipher = Cipher.getInstance("AES");
cipher.init( mode , secretKey );
return cipher;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} }

  

测试代码:

package com.smt.cipher;

import java.security.NoSuchAlgorithmException;

import com.smt.cipher.symmetry.DESUtil;

public class Main2 {

	public static void main(String[] args) throws NoSuchAlgorithmException {
System.out.println( DESUtil.encrypt("测试文本DES", "abcdabcd" ) );
System.out.println( DESUtil.descrypt( DESUtil.encrypt("测试文本DES", "abcdabcd" ) , "abcdabcd"));
} }

  

输出结果:

代码git 下载地址:https://github.com/hualiuwuxin/tools.git

DES加密Java实现的更多相关文章

  1. paip.提升安全性----Des加密 java php python的实现总结

    paip.提升安全性----Des加密 java php python的实现总结 ///////////    uapi         private static String decryptBy ...

  2. DES加密 java与.net可以相互加密解密两种方法

    DES加密 java与.net可以相互加密解密两种方法 https://www.cnblogs.com/DrWang/archive/2011/03/30/2000124.html sun.misc. ...

  3. DES加密 java与.net可以相互加密解密的方法

    我.net程序员.今天和java的童鞋交互,单点登录的操作.采用了如下的加密和解密的方式.经过验证,完美结合.通过这个方法可以实现java和C#相互加密与解密 并能保持解密出来一致. 废话少说,上代码 ...

  4. C#用DES加密JAVA用DES解密,JAVA用DES加密C#用DES解密的实现

    这里贴出来的是可通用的C#与jav的DES加密类,希望对大家管用直接复制即可用 C#DES加密解密类 ///<summary><![CDATA[加密解密帮助类]]></s ...

  5. java DES转C#DES加密解密

    一个程序用到java的cn.core.jar加密的,需要在.NET 中解密,发现JAVA的des算法与C#的有点区别. 自己不太懂加密解密算法,所以找了个省事的方法,用IKVM.NET,用这个将cn. ...

  6. (iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题

    我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Bas ...

  7. des加密解密——java加密,php解密

    最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混 ...

  8. 【知识积累】DES算法之C#加密&Java解密

    一.前言 在项目需要添加安全模块,客户端调用服务端发布的service必须要经过验证,加密算法采用DES,客户端采用C#进行加密,服务端使用Java进行解密.废话不多说,直接上代码. 二.客户端 客户 ...

  9. 一个java的DES加密解密类转换成C#

    一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...

随机推荐

  1. centos /data目录扩容

    /data盘被日志撑死了,必须扩容 有一块现成的100G的/dev/sdb盘,但是mount到了/data/test目录下,而且还有应用程序在上面进行读写操作 1.先查看哪些应用程序 在占用磁盘 #f ...

  2. winform 异性窗体的实现

    效果图 首先需要在vs里添加控件  AlphaForm.dll 添加完了有这来两个控件 1.把第二个控件拖入窗体里把窗体铺满 2.找一张至少有一个闭合图形的透明图片 设置为AlphaFormTrans ...

  3. 2017ICPC南宁赛区网络赛 Minimum Distance in a Star Graph (bfs)

    In this problem, we will define a graph called star graph, and the question is to find the minimum d ...

  4. nginx 之 proxy_pass详解

    在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径:如果没有/,表示相对路径,把匹配的路径部分也给代理走.     假设下面四种情况分别用 h ...

  5. menson 使用方法

    参考:http://mesonbuild.com/Running-Meson.html#configuring-the-source https://github.com/google/googlet ...

  6. ArcGIS中的数据连接问题——数据类型不统一

    博主在研究空间数据分布的时候经常会用到 ArcGIS 进行空间数据可视化.但是有时候会由于数据类型不统一而无法将 csv 中的数据连接到底图上.比如在底图中的数据是字符串格式,而 csv 中是数字格式 ...

  7. 【转载】 A* 寻路算法 (个人认为最详细,最通俗易懂的一个版本)

    原文地址: http://www.cppblog.com/christanxw/archive/2006/04/07/5126.html =============================== ...

  8. 强化学习论文(Scalable agent alignment via reward modeling: a research direction)

     原文地址: https://arxiv.org/pdf/1811.07871.pdf ======================================================== ...

  9. Unity 3D接入ShareSDK流程2

    Unity开发VR之Vuforia 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- ...

  10. HDU5658:CA Loves Palindromic (回文树,求区间本质不同的回文串数)

    CA loves strings, especially loves the palindrome strings. One day he gets a string, he wants to kno ...