`

DES/ECB/PKCS5Padding加密

阅读更多
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.ShortBufferException;
import javax.crypto.spec.SecretKeySpec;

public class Test {

	public static void main(String args[]) {
		String textToCrypting = "hello world!";
		
		// Object of this class provides the functionality for
        // encryption and decryption.
        Cipher cipher;
        try {
            // parameter "DES" specifies type of cipher we want to create
            // through the factory method. It includes algorithm, mode and
            // padding. You can define only algorithm and in that case default
            // values will be used for mode and padding.
            cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
        } catch (NoSuchAlgorithmException ex) {
            // requested cryptographic algorithm is not available
        	ex.printStackTrace();
            return;
        } catch (NoSuchPaddingException ex) {
            // requested padding mechanism is not available in the environment.
        	ex.printStackTrace();
            return;
        }
        // The length of keyString is 8. It's important characteristic
        // for encryption
        String keyString = "testtest";
        byte[] keyData = keyString.getBytes();
        // key object specifies a secret key
        // it uses to construct the secret key for our cipher object from a byte
        // array
        SecretKeySpec key = new SecretKeySpec(keyData, 0, keyData.length, "DES");
        try {
            // initializing with setting up the type of operation it's to be
            // used for. In this case - for encryption.
            cipher.init(Cipher.ENCRYPT_MODE, key);
        } catch (InvalidKeyException ex) {
            // given key object is inappropriate for initializing this cipher
        	ex.printStackTrace();
            return;
        }
        int cypheredBytes = 0;
        byte[] inputBytes = textToCrypting.getBytes();
        byte[] outputBytes = new byte[100];
        try {
            // doFinal method encrypts data to outputBytes array.
            // for unknown or big counts of data update method more recommended
            // counts of crypted bytes saved inside cypheredBytes variable
            cypheredBytes = cipher.doFinal(inputBytes, 0, inputBytes.length,
                    outputBytes, 0);
        } catch (IllegalStateException ex) {
        	ex.printStackTrace();
            return;

        } catch (ShortBufferException ex) {
        	ex.printStackTrace();
            return;
        } catch (IllegalBlockSizeException ex) {
        	ex.printStackTrace();
            return;
        } catch (BadPaddingException ex) {
        	ex.printStackTrace();
            return;
        }
        String str;
		try {
			str = new String(outputBytes, 0, cypheredBytes, "iso-8859-1");
			inputBytes = str.getBytes("iso-8859-1");
		} catch(UnsupportedEncodingException e) {
			e.printStackTrace();
		}
        
        try {
            cipher.init(Cipher.DECRYPT_MODE, key);
        } catch (InvalidKeyException ex) {
            return;
        }
        try {
            // decrypts data
            cypheredBytes = cipher.doFinal(inputBytes, 0, inputBytes.length,
                    outputBytes, 0);
        } catch (IllegalStateException ex) {
        	ex.printStackTrace();
            return;
        } catch (ShortBufferException ex) {
        	ex.printStackTrace();
            return;
        } catch (IllegalBlockSizeException ex) {
        	ex.printStackTrace();
            return;
        } catch (BadPaddingException ex) {
        	ex.printStackTrace();
            return;
        }
        str = new String(outputBytes, 0, cypheredBytes);
        
        System.out.println(str);

	}

}
 
分享到:
评论

相关推荐

    对接java AES/ECB/PKCS7Padding加密

    这个过程完全符合Java的AES/ECB/PKCS7Padding加密方式,可以与Java代码无缝对接。 在实际应用中,为了提高安全性,建议使用更复杂的加密模式如CBC(Cipher Block Chaining)或CFB(Cipher Feedback),并且可以使用...

    C++和JAVA,AES/ECB/PKCS5Padding 互通

    这里的“C++和JAVA,AES/ECB/PKCS5Padding 互通”指的是使用相同的加密算法,即高级加密标准(AES)的电子密码本模式(ECB)和PKCS5填充(Padding)来实现两个不同平台之间的数据安全传输。AES是一种广泛使用的对称...

    AES/ECB/PKCS5Padding 算法

    AES/ECB/PKCS5Padding 算法,用于数据加密,实现方式为Java。AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准

    des 及3des ecb pkcs5padding 加密 c++

    总的来说,理解和实现DES及3DES的ECB模式加密,以及PKCS5Padding在C++中的应用,需要对加密算法原理、C++编程以及OpenSSL库有一定的掌握。这样的技能在信息安全、网络通信和数据保护等领域都有广泛的应用。通过实际...

    delphi与java 加密解密 DES/CBC/PKCS5Padding

    最近做一个接口,与JAVA的关于DES/CBC/PKCS5Padding 互相解密。在网上找了很多资料,摸索了3天才摸索出来。同样的明文,用JAVA加密的密文死活都跟用DELPHI加密的不相等,有时候少于8个字符的就正常,多了8个字符的就...

    Java解决AES加密解密 ( AES/ECB/PKCS5Padding )

    JAVA解决AES ECB 模式下加密解密;附加国内三方AES加密网站---http://tool.chacuo.net/cryptaes;如有用解决您工作问题,烦请点个赞

    Delphi10.2 DES/CBC/PKCS5Padding/UTF-8

    标题 "Delphi10.2 DES/CBC/PKCS5Padding/UTF-8" 指的是使用 Delphi 10.2 开发的一个程序,该程序实现了数据加密标准(DES)算法,采用循环块密码(CBC)模式,并且使用PKCS5填充方式来处理边界情况,同时解决了在...

    AES/CBC/PKCS5Padding/ 加解密

    在描述中提到的“AES/CBC/PKCS5Padding”,分别代表了AES算法的不同部分: - AES:AES是高级加密标准,由NIST(美国国家标准与技术研究所)在2001年标准化,取代了之前的DES加密标准。它有三种不同尺寸的密钥,分别...

    Delphi XE2+标准AES加解密算法(AES/EBC,CBC/PKCS5Padding-base64)

    实现了AES/ECB/PKCS5Padding、AES/CBC/PKCS5Padding 密钥长度128/192/256bit,密钥0填充。是标准的AES算法,支持在线AES加解密网站互解。 本源码从CSDN一位前辈的源码基础上做了更改,增加支持加密返回BASE64,更加...

    delphi版的3DES加密 pkcs5padding填充

    总结起来,Delphi中的3DES加密结合了ECB模式和PKCS5Padding填充,提供了一种可靠的数据加密方案。通过源代码文件`DesCipher.pas`,我们可以深入了解这种加密方法的具体实现,这对于理解和使用3DES加密在Delphi环境中...

    Delphi7AES加密解密与JAVA互转(默认128位+ECB+PKCS5Padding+先BASE64再HEX)

    在这里,我们特别关注128位密钥长度的AES加密,使用ECB(Electronic Codebook)模式,配合PKCS5Padding填充策略,以及数据编码的BASE64和HEX转换。 首先,AES加密是一种分组密码,它将明文数据分成固定大小的块进行...

    AES128 CBC PKCS7Padding ,自动填充,已经成功与平台握手,通过验证

    uint16_t aes_encrypt(uint8_t *iv,uint8_t *Key,uint8_t *input,uint16_t length)/*加密时...uint16_t PKCS7Padding(uint8_t *p, uint16_t len)/*加密明文如果不是16byte整倍数,则根据PKCS7标准填充至16byte整倍数*/

    Java实现AES/CBC/PKCS7Padding加解密的方法

    Java实现AES/CBC/PKCS7Padding加解密的方法是指使用Java语言实现AES对称加密算法的加解密过程,其中包括了加密和解密两个步骤。AES是一种对称加密算法,使用同一个密钥进行加密和解密操作。 在Java中,AES加解密...

    AES 示例(CBC算法模式 PKCS5填充模式)

    在本示例中,我们将深入理解AES-CBC-PKCS5加密和解密的原理,并通过Delphi和Java的源码来阐述其实现。 **AES加密算法** AES是一种基于替换和置换的分组密码,它使用128位的块大小和128、192或256位的密钥长度。它的...

    DES加密解析,ECB,CBC

    1. **为平台**:使用`DES/ECB/PKCS5Padding`加密方式。在这种情况下,需要注意的是,如果不将密钥转换为Hex格式,则应该使用UTF-8编码。 2. **平台**:使用`DES/CBC/PKCS5Padding`加密方式。在配置密钥时,需要注意...

    PHP实现的DES加密解密封装类完整实例

    * 可与java的DES(DESede/CBC/PKCS5Padding)加密方式兼容 * */ class CryptDes { var $key; var $iv; function CryptDes($key, $iv){ $this->key = $key; $this->iv = $iv; } function encrypt($input){ $...

    AES_CBC_PKCS5加解密 MD5加密

    AES(Advanced Encryption Standard)即高级加密标准,是一种广泛应用的块密码算法,而CBC(Cipher Block Chaining)模式和PKCS5(Public Key Cryptography Standards #5)填充模式是AES加密中常用的模式和填充方式...

    jce_policy-8.AES加密版本.zip

    Exception in thread "main" java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/ECB/PKCS7Padding https://www.codeprj.com/blog/92cdc41.html

    PHP版DES加解密类

    PHP版DES加解密类 可与java的DES(DESede/CBC/PKCS5Padding)加密方式兼容

Global site tag (gtag.js) - Google Analytics