`

Md5\Base64\Des 常用加密算法

阅读更多

常用的几种加解密方式备份:

 

1、MD5方式:

import java.security.MessageDigest;

 

String s= "test";

 

MessageDigest md5 = MessageDigest.getInstance("MD5");

byte[] byteArray = md5.digest(s.getBytes("UTF-8"));

 

 

 

 

2、Base64方式:

import org.apache.commons.codec.binary.Base64;

 

String s="test";

Base64.decodeBase64(s.getBytes("UTF-8"));

 

 

 

byte[] encodeBytes = Base64.encodeBase64(s.getBytes("UTF-8"), true);

String encodeString  =  new String(encodeBytes).trim();

 

 

 

3、Des方式:

import javax.crypto.Cipher;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

import javax.crypto.spec.DESedeKeySpec;

import javax.crypto.spec.IvParameterSpec;

 

private static final String DEFAULT_ENCRYPT_MODE = "DES/ECB/PKCS5Padding";

private static final String DEFAULT_KEY_ALGORITHM = "DES";

private static final String DESEDE_KEY_ALGORITHM = "DESede";

 

 

public static byte[] DES(byte[] bytes, String algorithm, int iMode, byte[] key, byte[] iv) {

if (StringUtils.isEmpty(algorithm)) {

algorithm = DEFAULT_ENCRYPT_MODE;

}

if (iMode != Cipher.ENCRYPT_MODE && iMode != Cipher.DECRYPT_MODE) {

throw new IllegalArgumentException("iMode只能为1或2");

}

 

try {

DESKeySpec desKeySpec = new DESKeySpec(key);

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DEFAULT_KEY_ALGORITHM);

SecretKey secretKey = keyFactory.generateSecret(desKeySpec);

 

Cipher cipher = Cipher.getInstance(algorithm);

if (iv != null) {

IvParameterSpec ivps = new IvParameterSpec(iv);

cipher.init(iMode, secretKey, ivps);

} else {

cipher.init(iMode, secretKey);

}

return cipher.doFinal(bytes);

} catch (Exception ex) {

logger.error("", ex);

}

return null;

}

 

//加解密转换用DESede

 

public static byte[] DESede(byte[] bytes, String algorithm, int iMode, byte[] key, byte[] iv) {

if (StringUtils.isEmpty(algorithm)) {

algorithm = DEFAULT_ENCRYPT_MODE;

}

if (iMode != Cipher.ENCRYPT_MODE && iMode != Cipher.DECRYPT_MODE) {

throw new IllegalArgumentException("iMode只能为1或2");

}

 

try {

DESedeKeySpec desKeySpec = new DESedeKeySpec(key);

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DESEDE_KEY_ALGORITHM);

SecretKey secretKey = keyFactory.generateSecret(desKeySpec);

 

Cipher cipher = Cipher.getInstance(algorithm);

if (iv != null) {

IvParameterSpec ivps = new IvParameterSpec(iv);

cipher.init(iMode, secretKey, ivps);

} else {

cipher.init(iMode, secretKey);

}

return cipher.doFinal(bytes);

} catch (Exception ex) {

logger.error("", ex);

}

return null;

}

 

public static byte[] DESedeWithPKCS7Padding(byte[] bytes, String algorithm, int iMode,

byte[] key, byte[] iv) {

// DESede/ECB/PKCS5Padding

if (StringUtils.isEmpty(algorithm)) {

algorithm = DEFAULT_ENCRYPT_MODE;

}

if (iMode != Cipher.ENCRYPT_MODE && iMode != Cipher.DECRYPT_MODE) {

throw new IllegalArgumentException("iMode只能为1或2");

}

 

try {

DESedeKeySpec desKeySpec = new DESedeKeySpec(key);

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DESEDE_KEY_ALGORITHM);

SecretKey secretKey = keyFactory.generateSecret(desKeySpec);

 

Cipher cipher = Cipher.getInstance(algorithm, "BC");

if (iv != null) {

IvParameterSpec ivps = new IvParameterSpec(iv);

cipher.init(iMode, secretKey, ivps);

} else {

cipher.init(iMode, secretKey);

}

return cipher.doFinal(bytes);

} catch (Exception ex) {

ex.printStackTrace();

logger.error("", ex);

}

return null;

}

 

 

 

4、Hex与byte[]转换:

 

 

/**

* 将字节数组转换为16进制字符串表示

* @param bytes

*            待转换的字节数组

* @return 16进制表示的字符串

*/

public static String bytes2Hex(byte[] bytes) {

StringBuilder sb = new StringBuilder();

String hex = null;

for (int i = 0; i < bytes.length; i++) {

hex = Integer.toHexString(bytes[i] & 0xFF);

if (hex.length() == 1) {

sb.append("0");

}

sb.append(hex);

}

return sb.toString();

}

 

/**

* 将16进制字符串转换为字节数组

* @param hexstr

* @return

*/

public static byte[] hex2Bytes(String hexstr) {

byte[] b = hexstr.getBytes();

int length = b.length;

if ((length % 2) != 0) {

throw new IllegalArgumentException("字符串对应字节数必须是偶数");

}

byte[] b2 = new byte[b.length / 2];

for (int n = 0; n < b.length; n += 2) {

String item = new String(b, n, 2);

b2[n / 2] = (byte) Integer.parseInt(item, 16);

}

return b2;

}

 

分享到:
评论

相关推荐

    js加密算法3des和md5-base64和常用工具

    本文将深入探讨三种常见的加密算法:3DES、MD5以及Base64,并介绍它们在实际应用中的工具和用途。 首先,我们来了解一下3DES(Triple DES,三重数据加密标准)。3DES是一种对称加密算法,它是DES(Data Encryption ...

    Delphi AES DES MD5 RSA BASE64等加密算法源码实例集.rar

    Delphi加密算法集,包括了Delphi AES DES MD5 RSA BASE64 2DES 3DES Blowfish CRC32-Static SHA等 常用的加密算法用法实例,比较不错的Delphi加密实例代码了,浅显易懂而且实用的常见加密算法实例,包括字符串和文件...

    Vue-常用加密(MD5,DES,SHA256,BASE64,SHA1,RSA)

    在 Vue 中,常见的加密算法包括 MD5、DES、SHA256、BASE64、SHA1、RSA 等。BASE64 只是一种编码格式,并不是加密算法,但常用于在 HTTP 环境下传递较长的标识信息。 加密算法的选择需要根据实际情况进行选择,考虑...

    PB可用md5加密、des加解密,Base64编码DLL、附PB11.5调用例程

    标题中的“PB可用md5加密、des加解密,Base64编码DLL、附PB11.5调用例程”表明这是一个关于PowerBuilder(PB)应用的开发资源,其中包含使用MD5加密、DES(Data Encryption Standard)解密以及Base64编码的功能。...

    Delphi加密算法大全2DES_3DES_3DES3_AES_BASE64_BLOWFISH_CRC_DES_MD5_RSA_SHA

    本资料包涵盖了多个常见的加密算法,包括2DES、3DES、3DES3、AES、Base64、Blowfish、CRC、DES、MD5以及RSA和SHA系列。以下将对这些算法进行详细介绍。 1. **2DES(双密钥数据加密标准)**:基于DES(Data ...

    常用MD5加密算法和3-DES加密算法java实现

    ### 常用MD5加密算法和3-DES加密算法Java实现 在现代软件开发过程中,数据的安全性变得越来越重要。对于数据传输和存储过程中的安全性保障,加密技术发挥着至关重要的作用。本文将详细介绍如何在Java环境中实现两种...

    Base64工具类(加密、解密 )以及MD5加密

    下面将详细阐述Base64、MD5、DES和AES这四种技术,并探讨它们的应用场景。 1. **Base64**:Base64是一种将二进制数据转换为可打印ASCII字符的编码方式,常用于在电子邮件系统中传输包含二进制的数据。Base64加密...

    Java实现的Base64、MD5、3DES三种工具

    Java实现的Base64、MD5、3DES三种工具 本文档将对Java实现的Base64、MD5、3DES三种工具进行详细的知识点解析。 一、Base64加密工具 Base64是一种基于ASCII字符集的加密方法,它使用一个64字符的字符集来表示二...

    DES加密算法的delphi源码

    总的来说,通过学习这个DES加密算法的Delphi源码,你不仅可以掌握DES加密算法的原理和实现,还能提升你在Delphi编程中的实践能力,进一步理解和运用面向对象编程的思想。这对于任何想要深入研究加密技术或者使用...

    PB可用md5加密、des加解密DLL,附PB9调用例程

    接下来,DES(Data Encryption Standard)是一种对称加密算法,用于保护敏感数据。它使用56位密钥对64位的数据块进行加密和解密。尽管DES现在被认为不够安全,因为它较短的密钥长度容易受到现代计算能力的攻击,但在...

    Delphi_d7加密算法大全.rar

    这个压缩包包含了MD5、Base64、CRC32、DES、AES、Blowfish、RSA以及SHA等算法的详细使用案例,为开发者提供了丰富的参考资料。 1. **MD5(Message-Digest Algorithm 5)**:MD5是一种广泛使用的哈希函数,它将任意...

    IOS加密代码 ase md5 base64

    在这个主题中,我们将深入探讨三种常用的加密技术:AES(Advanced Encryption Standard)、MD5(Message-Digest Algorithm 5)以及Base64。 **AES加密** AES,即高级加密标准,是一种块密码,它以其高效和安全性而...

    Python常用base64 md5 aes des crc32加密解密方法汇总

    base64模块的base64编码、解码调用了binascii模块,binascii模块中的b2a_base64()函数用于base64编码,binascii模块中的a2b_base64()函数用于base64解码。 &gt;&gt;&gt;import base64 &gt;&gt;&gt; s = 'hello,word!' &gt;&gt;&gt; base64.b64...

    java-android:AES加密,RAS加密,DES加密,MD5加密,Base64加密,异或加密

    本文将详细介绍Java中常见的几种加密算法,包括AES加密、RSA加密、DES加密、MD5哈希加密、Base64编码以及异或(XOR)加密。理解并掌握这些算法对于开发安全的应用至关重要。 首先,AES(Advanced Encryption Standard...

    java加密算法:Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法

    java关于加密的算法demo代码(Base64加密\数字签名\对称加密算法\非对称加密算法\消息摘要算法) JAVA安全实现三种方式: 1.JDK 2.Commons Codec 3.Bouncy Castle 一。非对称加密算法: 1.DH 2.RSA 3.ELGamal 二。...

    android studio JNI RSA DES AES base64 MD5 加解密.rar

    本资源提供了在Android Studio项目中使用JNI实现RSA、DES、AES以及Base64和MD5的示例。 1. **RSA**: RSA是一种非对称加密算法,它基于两个密钥——公钥和私钥。公钥可以公开,用于加密数据;而私钥必须保密,用于...

    Encrypt.rar (md5 des base64)

    在这个“Encrypt.rar”压缩包中,包含的是用C++语言实现的MD5、DES和Base64三种加密算法的源代码文件。接下来,我们将深入探讨这三个核心概念及其在C++中的实现。 1. **MD5(Message-Digest Algorithm 5)**: MD5...

    Des_md5_base64.rar

    在这个名为"Des_md5_base64.rar"的压缩包中,我们关注的是三种特定的加密方法:JavaScript实现的DES加密、Java实现的DES解密以及JavaScript的MD5加密。这些技术在网络安全、数据存储和通信等领域有广泛应用。 首先...

    swift-iOS数据安全--base64md5AESDESRSA

    本主题主要涉及了基础编码技术如Base64,以及密码学中的哈希算法MD5,对称加密AES和DES,以及非对称加密RSA。 1. **Base64**:Base64是一种用于将二进制数据转换为可打印ASCII字符的编码方式。在iOS中,`Data`对象...

    编码转换总结 gbk转unicode base64 des md5 crc校验 vc 源码

    本文将深入探讨在VC(Visual C++)环境下实现的几个关键编码转换和校验技术:GBK转Unicode、Base64编码、DES加密、MD5哈希以及CRC校验。 首先,GBK是一种针对中文字符的编码标准,它兼容GB2312,包含了大量的汉字和...

Global site tag (gtag.js) - Google Analytics