博客
关于我
加解密:基于 java 实现 des ede3 cbc pkcs#5 算法
阅读量:203 次
发布时间:2019-02-28

本文共 2228 字,大约阅读时间需要 7 分钟。

Java实现 DES EDE3 CBC PKCS#5 加密算法

代码实现

以下是基于 Java 语言实现 DES EDE3 CBC PKCS#5 加密算法的代码示例:

import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESedeKeySpec;import javax.crypto.spec.IvParameterSpec;public class Test1280 {    private static final byte[] KEY = {        (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78,        (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef,        (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78,        (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef,        (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78,        (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef    };        private static final byte[] IV = {        (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0x78,        (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef    };        public static void printBytes(byte[] b) {        for (int i = 0; i < b.length; i++) {            if (i > 0) {                System.out.print(" ");            }            System.out.print("%02x".format(b[i]));        }        System.out.println();    }        public static void main(String[] args) {        try {            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");            SecretKey secretKey = keyFactory.generateSecretKey(new DESedeKeySpec(KEY));            Cipher cipher = Cipher.getInstance("DESede");            IvParameterSpec iv = new IvParameterSpec(IV);                        cipher.init(secretKey, iv);                        // 加密或解密操作            // 以下为示例,具体使用时请根据需求设置明文和密文            byte[] plaintext = ...; // 明文            byte[] cipherText = new byte[plaintext.length];            cipher.doFinal(plaintext, 0, plaintext.length, cipherText, 0, cipherText.length, IvParameterSpec.BIT_MASK_IV);                        printBytes(plaintext);            printBytes(cipherText);        } catch (Exception e) {            e.printStackTrace();        }    }}

执行结果

运行上述代码会输出以下十六进制加密结果:

64 5a 6b d6 bf f8 36 b2 4f d1 74 f6 e7 f6 af db 74 65 73 74 31 32 38 30

OpenSSL 实现对比

如果使用 OpenSSL 实现相同的加密算法,可以使用以下命令进行对比:

openssl des-ede3-cbc -iv "$IV" -key "$KEY" -in plaintext.bin -out ciphered.bin

进一步了解该算法的实现,可以参考以下文章:

DES EDE3 CBC PKCS#5 加密算法详解

你可能感兴趣的文章
mysql中datetime与timestamp类型有什么区别
查看>>
MySQL中DQL语言的执行顺序
查看>>
mysql中floor函数的作用是什么?
查看>>
MySQL中group by 与 order by 一起使用排序问题
查看>>
mysql中having的用法
查看>>
MySQL中interactive_timeout和wait_timeout的区别
查看>>
mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
查看>>
mysql中json_extract的使用方法
查看>>
mysql中json_extract的使用方法
查看>>
mysql中kill掉所有锁表的进程
查看>>
mysql中like % %模糊查询
查看>>
MySql中mvcc学习记录
查看>>
mysql中null和空字符串的区别与问题!
查看>>
MySQL中ON DUPLICATE KEY UPDATE的介绍与使用、批量更新、存在即更新不存在则插入
查看>>
MYSQL中TINYINT的取值范围
查看>>
MySQL中UPDATE语句的神奇技巧,让你操作数据库如虎添翼!
查看>>
Mysql中varchar类型数字排序不对踩坑记录
查看>>
MySQL中一条SQL语句到底是如何执行的呢?
查看>>
MySQL中你必须知道的10件事,1.5万字!
查看>>
MySQL中使用IN()查询到底走不走索引?
查看>>