`

Security3DES

 
阅读更多
public class Security3DES {
	private static final String Algorithm = "DESede"; //定义 加密算法,可用 DES,DESede,Blowfish
	
	/**
	 * @Title: encryptData
	 * @Description: 加密
	 * @param cryptKey 密钥
	 * @param src
	 * @return
	 */
    public static byte[] encryptData(String cryptKey, byte[] src) {
       try {
            //添加新安全算法,如果用JCE就要把它添加进去
            //Security.addProvider(new com.sun.crypto.provider.SunJCE());
           
            SecretKey deskey = new SecretKeySpec(build3DesKey(cryptKey), Algorithm);
            Cipher cip = Cipher.getInstance(Algorithm);
            cip.init(Cipher.ENCRYPT_MODE, deskey);
            return cip.doFinal(src);
        } catch (java.security.NoSuchAlgorithmException e1) {
            e1.printStackTrace();
        } catch (javax.crypto.NoSuchPaddingException e2) {
            e2.printStackTrace();
        } catch (java.lang.Exception e3) {
            e3.printStackTrace();
        }
        return null;
    }
    
    /**
     * @Title: decryptData
     * @Description: 解密
     * @param cryptKey 密钥
     * @param src
     * @return
     */
	public static byte[] decryptData(String cryptKey, byte[] src) {
		try {
			SecretKey deskey = new SecretKeySpec(build3DesKey(cryptKey),Algorithm);

			Cipher cip = Cipher.getInstance(Algorithm);
			cip.init(Cipher.DECRYPT_MODE, deskey);
			return cip.doFinal(src);
		} catch (java.security.NoSuchAlgorithmException e1) {
			e1.printStackTrace();
		} catch (javax.crypto.NoSuchPaddingException e2) {
			e2.printStackTrace();
		} catch (java.lang.Exception e3) {
			e3.printStackTrace();
		}
		return null;
	}
    
	/**
	 * @Title: build3DesKey
	 * @Description: 将key转为24位byte
	 * @param keyStr
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static byte[] build3DesKey(String keyStr) throws UnsupportedEncodingException {
		byte[] key = new byte[24];
		byte[] temp = keyStr.getBytes("UTF-8");
		if (key.length > temp.length) {
			System.arraycopy(temp, 0, key, 0, temp.length);
		} else {
			System.arraycopy(temp, 0, key, 0, key.length);
		}
		return key;
	}
	
    public static void main(String[] args){
		try {
			String keyBytes = "012345678901234567890123";

			String szSrc = "This is a 3DES test. 测试";

			System.out.println("加密前的字符串:" + szSrc);

			byte[] encoded = encryptData(keyBytes, szSrc.getBytes());
			BASE64Encoder enc = new BASE64Encoder();
			String cipherString = enc.encode(encoded);
			System.out.println("加密后的字符串:" + cipherString);

			BASE64Decoder base64 = new BASE64Decoder();

			byte[] byStr = base64.decodeBuffer(cipherString);
			byte[] srcBytes = decryptData(keyBytes, byStr);
			System.out.println("解密后的字符串:" + (new String(srcBytes)));
		} catch (IOException e) {
			e.printStackTrace();
		}
    }

 

分享到:
评论

相关推荐

    security_DES.rar_3des_DES加密_des_des 密

    3DES(Triple DES),全称为三重DES,是为了解决DES的密钥长度不足而设计的。3DES实际上是将DES执行三次加密过程,以提高安全性。它使用两个或三个独立的56位密钥,通过以下步骤进行操作: 1. 第一次加密:用第一个...

    3DES算法计算MAC

    3DES 算法计算 MAC 3DES 算法是一种基于对称加密的算法,使用双倍长密钥来计算工作密钥、PIN 密钥和 MAC 值。下面是关于 3DES 算法计算 MAC 的知识点: 1. 什么是 3DES 算法? 3DES 算法是基于 DES 算法的一种...

    C# DES 3DES AES SM4 PBOC加解密源码

    本文将深入探讨C#中实现的四种主要加密算法:DES、3DES、AES以及SM4,并结合PBOC(中国金融智能卡)标准算法进行讨论。这些源码可用于创建动态库,为实际项目提供安全的数据保护功能。 1. **DES(Data Encryption ...

    3des.rar_3des c_3des CSharp_3des.rar_c 3des_c++ des 3des

    C#作为.NET框架的一部分,可以使用`System.Security.Cryptography`命名空间中的`TripleDESCryptoServiceProvider`类来实现3DES。这个类提供了便捷的方法来设置密钥和初始化向量(IV),以及加密和解密数据。开发者...

    C# 3DES 加密源码

    - **System.Security.Cryptography.TripleDESCryptoServiceProvider**:这是.NET框架提供的3DES加密服务类,通过实例化它可以获取到3DES加密器对象。 - **CreateEncryptor()** 和 **CreateDecryptor()**:这两个方法...

    java和C#通用des3加解密

    标题中的“java和C#通用des3加解密”指的是在Java和C#这两种不同的编程语言中实现DES(Data Encryption Standard)的加强版——3DES(Triple DES)加解密算法。3DES是一种广泛使用的对称加密算法,通过三次应用DES的...

    RSA加密和3DES加解密

    RSA加密和3DES加解密是两种常见的对称与非对称加密算法,在信息安全领域有着广泛应用。在JAVA环境中,这两种加密技术提供了数据保护的重要手段,确保了敏感信息在网络传输过程中的安全。 首先,RSA(Rivest-Shamir-...

    Java实现的对称加密算法3DES定义与用法示例

    jdk 3des decrypt : cakin24 security 3des 结论 本文主要介绍了Java实现的对称加密算法3DES定义与用法示例,介绍了3DES的定义、好处、相关参数和代码实现。希望本文能够帮助读者更好地理解3DES算法。

    java AES,DES,3DES,RAS,DSA 加密算法实现

    Java加密技术是保护数据安全的重要工具,涉及到的主要算法有AES、DES、3DES、RSA和DSA。这些算法在信息安全领域有着广泛的应用,如数据传输、密码存储、数字签名等。以下将详细介绍这些加密算法的原理及Java中的实现...

    3DES加密解密jar包(ai-security-sun.jar)

    加密方法: com.linkage.security.SecurityManager.Encrypt3DES(content, key); 解密方法: com.linkage.security.SecurityManager.Decrypt3DES(content, key)

    DES+3DES加密算法java代码(+图解)

    3DES,全称为Triple DES,是DES的加强版,通过三次加密过程增强了安全性。在Java编程环境中,我们可以利用Java Cryptography Extension (JCE) API来实现DES和3DES的加密与解密操作。 DES算法基于Feistel结构,它将...

    C#3DES加密解密

    在C#中,我们可以使用`System.Security.Cryptography`命名空间下的`TripleDESCryptoServiceProvider`类来实现3DES加密和解密。以下是一个基本的3DES加密解密函数示例: ```csharp using System; using System.Text;...

    C#-3DES-DLL及DEMO

    在C#中,可以使用`System.Security.Cryptography`命名空间下的`TripleDESCryptoServiceProvider`类实现3DES加密。 DEMO程序`3DES-DEMO.exe`是用于验证加密和解密功能是否正常工作的实例。用户可以通过输入明文和...

    java 3des rsademo

    Java中的3DES(Triple Data Encryption Standard)是一种强化的DES(Data Encryption Standard)加密算法,它通过将DES加密过程执行三次来提高安全性。3DES在现代密码学中被广泛使用,尤其是在需要兼容旧系统或者...

    3des.zip_3DES加密解密_3des_3des java

    3DES(Triple DES)是一种广泛使用的对称加密算法,全称为三重数据加密标准,是DES(Data Encryption Standard)的加强版本。DES由于其56位的密钥长度在现代密码学标准下被认为不够安全,因此3DES应运而生,通过三次...

    3DES.rar_3DES jsp_DES JAVA_des_java 3des_java 3des 解密

    **3DES(Triple DES)**,全称为三重数据加密标准,是DES(Data Encryption Standard)的加强版,为了应对DES的56位密钥长度可能被破解的问题,3DES采用了三次加密过程,大大增强了其安全性。3DES实际上是对DES进行...

    3DES.rar_3des

    尽管3DES已经相对过时,但仍在一些旧系统和协议中使用,例如TLS(Transport Layer Security)的早期版本,以及一些银行系统和无线通信标准。然而,由于其较慢的速度和较低的效率,现在更倾向于使用AES等现代加密算法...

    c#加密解密(des 3des aes)

    在C#中,可以使用`System.Security.Cryptography`命名空间下的`DESCryptoServiceProvider`类来实现DES的加密和解密。 **3DES(Triple DES)** 为了弥补DES的弱点,3DES应运而生。3DES是通过三次应用DES算法来增加...

    3DES.zip_3des_3des java_java 3des

    3DES,全称为Triple Data Encryption Algorithm(三重数据加密算法),是DES(Data Encryption Standard)的一个增强版本,为了解决DES的密钥长度过短(56位)而设计的一种加密算法。在21世纪初,由于计算能力的飞速...

    实现3DES加解密的简单实现代码

    3DES(Triple Data Encryption Standard)是一种广泛应用的对称加密算法,它是基于DES(Data Encryption Standard)的加强版,为了解决DES较短密钥的安全性问题而设计。在这个场景中,我们将深入探讨3DES的原理、...

Global site tag (gtag.js) - Google Analytics