DES加密Java实现
下面是代码的实现:
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实现的更多相关文章
- paip.提升安全性----Des加密 java php python的实现总结
paip.提升安全性----Des加密 java php python的实现总结 /////////// uapi private static String decryptBy ...
- DES加密 java与.net可以相互加密解密两种方法
DES加密 java与.net可以相互加密解密两种方法 https://www.cnblogs.com/DrWang/archive/2011/03/30/2000124.html sun.misc. ...
- DES加密 java与.net可以相互加密解密的方法
我.net程序员.今天和java的童鞋交互,单点登录的操作.采用了如下的加密和解密的方式.经过验证,完美结合.通过这个方法可以实现java和C#相互加密与解密 并能保持解密出来一致. 废话少说,上代码 ...
- C#用DES加密JAVA用DES解密,JAVA用DES加密C#用DES解密的实现
这里贴出来的是可通用的C#与jav的DES加密类,希望对大家管用直接复制即可用 C#DES加密解密类 ///<summary><![CDATA[加密解密帮助类]]></s ...
- java DES转C#DES加密解密
一个程序用到java的cn.core.jar加密的,需要在.NET 中解密,发现JAVA的des算法与C#的有点区别. 自己不太懂加密解密算法,所以找了个省事的方法,用IKVM.NET,用这个将cn. ...
- (iOS)Base64加密和DES加密、以及JAVA和iOS中DES加密统一性问题
我们在项目中为了安全方面的考虑,通常情况下会选择一种加密方式对需要安全性的文本进行加密,而Base64加密和DES64加密是常用的加密算法.我记得我在前一个项目中使用的就是这两种加密算法的结合:Bas ...
- des加密解密——java加密,php解密
最近在做项目中,遇到des加密解密的问题. 场景是安卓app端用des加密,php这边需要解密.之前没有接触过des这种加密解密算法,但想着肯定会有demo.因此百度,搜了代码来用.网上代码也是鱼龙混 ...
- 【知识积累】DES算法之C#加密&Java解密
一.前言 在项目需要添加安全模块,客户端调用服务端发布的service必须要经过验证,加密算法采用DES,客户端采用C#进行加密,服务端使用Java进行解密.废话不多说,直接上代码. 二.客户端 客户 ...
- 一个java的DES加密解密类转换成C#
一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.P ...
随机推荐
- static关键字(修饰函数、局部变量、全局变量)
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 ...
- Kubernetes资源监控探索
搭建kubernetes集群,有一个默认的dashboard,但是这个dashboard比较简陋,不能将自定义展示.所以打算使用Grafana+Heapster+Influxdb构建一个一体化监控平台 ...
- AssetBundle打包详解
Unity5.x AssetBundle打包详解 在网上查看了很多资料,想详细搞清楚AssetBundle的原理.以实现符合项目需求的打包工具和加载逻辑 1. AssetBundle是什么? Asse ...
- Python 基础数据类型相互转换
字符串,数字,列表 ,元祖,字典 化相互转化 1 Int 与 str 之间如何转化,转换的结果是什么?有没有条件? #str(int型)可以转化为str 该过程没有条件 #字符串转化为 ...
- 『转』credential Provider 简易改写攻略
本次小学期的题目是windows下的凭证改编.本人负责的是Win7 下的credentials Provider 的编写以及其他杂七杂八的工作.当然给我印象最深的就是credentials provi ...
- placeholder兼容性问题
由于placeholder是H5新属性,IE9及以下都不支持 解决办法:给input添加一个背景图,背景图里面添加placeholder内容,当焦点落在输入框中,背景图隐藏,即可做出类似的效果 代码: ...
- 神州数码RIP路由协议
实验要求:熟练掌握RIP配置方法 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入端口 physical-l ...
- 大数据-07-Spark之流数据
摘自 http://dblab.xmu.edu.cn/blog/1084-2/ 简介 DStream是Spark Streaming的编程模型,DStream的操作包括输入.转换和输出. Spark ...
- [转] [Elasticsearch] 数据建模 - 处理关联关系(1)
[Elasticsearch] 数据建模 - 处理关联关系(1) 标签: 建模elasticsearch搜索搜索引擎 2015-08-16 23:55 6958人阅读 评论(0) 收藏 举报 分类: ...
- 20155219 2016-2017-2 《Java程序设计》第8周学习总结
20155219 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 通用API 日志API 1.java.util.logging包提供了日志功能相关类与接口, ...