package com.skmbw.util.cryption;
import java.security.InvalidKeyException;
import java.security.Key;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.spec.InvalidKeySpecException;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
/**
* DES对称加密和解密方法
* @author yinlei
* date 2012-7-16 下午4:54:51
*/
public class DESUtils {
private static Key key;
private static String ENCRYPTION_KEY = "sKmBWVteFlFyiNLeI";
static {
try {
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
random.setSeed(ENCRYPTION_KEY.getBytes());
KeyGenerator generator = KeyGenerator.getInstance("DES");
generator.init(random);//new SecureRandom(ENCRYPTION_KEY.getBytes()));
key = generator.generateKey();
generator = null;
//key = generateKey(ENCRYPTION_KEY);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 获得密钥
* @param secretKey 加密盐salt
* @return SecretKey密钥实例
* @throws NoSuchAlgorithmException
* @throws InvalidKeyException
* @throws InvalidKeySpecException
*/
protected static SecretKey generateKey(String secretKey) throws NoSuchAlgorithmException,InvalidKeyException,InvalidKeySpecException {
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
DESKeySpec keySpec = new DESKeySpec(secretKey.getBytes());
keyFactory.generateSecret(keySpec);
return keyFactory.generateSecret(keySpec);
}
/**
* 对字符串进行DES加密,并返回BASE64加密的字符创
* @param original 源字符
* @return 加密后的字符
* @author yinlei
* date 2012-7-16 下午4:55:30
*/
public static String getEncryptString(String original) {
try {
byte[] strBytes = original.getBytes();
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptStrByte = cipher.doFinal(strBytes);
return EncodeUtils.base64Encode(encryptStrByte);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 对DES加密和BASE64加密后的字符解密
* @param encryptStr 加密过的字符
* @return 解密后的原始字符
* @author yinlei
* date 2012-7-16 下午4:56:45
*/
public static String getDecryptString(String encryptStr) {
try {
byte[] strBytes = EncodeUtils.base64Decode(encryptStr);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] decryptStrByte = cipher.doFinal(strBytes);
return new String(decryptStrByte, "UTF-8");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public static void main(String[] args) {
String str = "root";
String pass = "0558yinlei3416763";
String enstr = getEncryptString(str);
String enpass = getEncryptString(pass);
System.out.println(enstr);
System.out.println(enpass);
System.out.println(getDecryptString(enstr));
System.out.println(getDecryptString(enpass));
}
}
分享到:
相关推荐
其中,加密又分全盘加密(Android 4.4 引入)和文件级加密(Android 7.0 引入),本文将论述加密中的全盘加密的基本知识。全盘加密在 Android 4.4 中引入,在 Android 5.0 中做了比较大的更新。 本文部分片段摘自 ...
苏林加密系统是一款专门为php加密的程序,支持sg11加密、xend加密、goto加密、Leave加密、enphp加密、NoName加密 可以发展用户,可以设置某加密价格,支持API接口加密,对接官方支付、码支付和易支付。 更新记录:...
在实际操作中,经常采用混合加密模式:利用非对称加密算法交换对称加密算法的密钥,再利用对称加密算法加密实际数据,从而结合两种加密算法的优点。 总之,加密算法是信息安全领域的基石,合理选择和使用加密算法...
在IT安全领域,加密技术是保护数据隐私和安全的关键手段。加密主要分为两种类型:对称加密和非对称加密。这两种加密方式各有其特点,适用于不同的场景。 **对称加密** 是一种历史悠久的加密方法,它依赖于一个相同...
单向加密 SHA1 单向加密 DES 双向,可解密 加密字符串 加密字符串 密钥为系统默认 加密文件 解密字符串 解密文件 128位MD5算法加密字符串 128位MD5算法加密Byte数组 32位MD5加密 Base64加密 Base64解密 DES加密/解密...
同态加密是一种高级的加密技术,它允许对加密数据进行计算,而无需先解密。在同态加密下,操作的结果仍然是加密的,但与原始未加密数据进行相同的操作会得到相同的结果。这一特性使得同态加密在数据隐私保护、云计算...
在这个场景中,我们关注的是如何加密POST请求中的数据,以及如何通过工具如HttpWatch来查看这些加密数据。下面我们将深入探讨POST提交数据加密的原理、方法以及HttpWatch工具的使用。 首先,POST方法是HTTP协议中...
代理重加密(Proxy Re-Encryption)是一种在公钥加密系统中的高级加密技术,它允许一个可信的第三方(代理)在不获取原始密文内容的情况下,将一个用户加密的信息重加密成另一个用户能解密的形式。这项技术在云计算...
在VB6.0环境下开发的这个程序主要关注的是数据安全领域,特别是文件的加密与解密功能。VB(Visual Basic)是一种由微软公司推出的事件驱动编程语言,它以其易用性和丰富的控件库深受程序员喜爱。在这个特定的项目中...
《Codesys平台功能块加密详解》 Codesys作为一款强大的工业自动化编程软件,提供了丰富的功能以确保项目的安全性,特别是对于程序和工艺块的加密管理。本文将深入探讨Codesys平台的功能块加密机制,包括设备加密、...
本文将深入探讨如何实现Android图片的加密和解密,主要关注国际标准的AES(Advanced Encryption Standard)加密和混入字节加密这两种方法。 AES加密是目前广泛使用的对称加密算法,其安全性高,效率优良。在Android...
本次使用JAVA语言,采用3DES加密算法进行对文本文件的加密,通过二进制和十六进制的转换来实现,产生加密文件,再对加密文件进行解密。 关键词:DES加密算法、加密、解密。摘要 随着现代网络技术的飞速发展,人们...
在网络安全领域,数据加密是保障信息安全的重要手段。在这个场景中,我们关注的是“JS前台加密,Java后台解密实现”,这通常涉及到用户敏感信息如用户名和密码的安全传输。以下是关于这个话题的详细解释: 首先,**...
《光盘加密大师 6.0:保护你的数据安全与隐私》 在信息化时代,数据安全和隐私保护显得尤为重要,特别是在存储介质广泛使用的背景下。光盘作为一种常见的存储工具,其内容的安全性同样不可忽视。"光盘加密大师 6.0...
加密和解密是信息安全领域中的核心概念,主要目的是保护数据的隐私性和完整性。在这个场景中,我们关注的是针对Hex文件的加密与解密过程,尤其是使用DES(Data Encryption Standard)算法进行操作。DES是一种古老的...
《易飞用户加密解密详解》 在信息技术领域,数据安全是至关重要的议题,而用户加密解密技术正是保障信息安全的重要手段。本文将围绕“易飞用户加密解密”这一主题,深入探讨其原理、应用及操作流程,帮助读者更好地...
在iOS开发中,为了保护应用程序的数据安全,对plist文件进行加密是常见的做法。Plist(Property List)文件是苹果系统中用于存储配置信息或轻量级数据的文件,通常以XML或二进制格式存在。当这些文件包含敏感信息时...
域之天YT88外壳加密工具。 [选项说明] 1、设定定时器:加密后的程序运行时将会以设定的时间间隔检查是否存在对应的加密锁,如果不存在,将会终止程序的运行。 2、反调试:用于防止被黑客非法调试程序 3、反CRC:当...
苏林加密系统是一款专门为php加密的程序,支持sg11加密、xend加密、goto加密、Leave加密、enphp加密、NoName加密 可以发展用户,可以设置某加密价格,支持API接口加密,对接官方支付、码支付和易支付。 更新记录:...
易语言 rsa加密 易语言 rsa加密易语言 rsa加密