`

3DES算法分享

阅读更多
首先认识一下3DES加密中(也是其他加密)主要涉及到的类
导入java中封装java算法的包:sunjce_provider.jar
注意通常导入这个包是会报编译错误,因此需要对myeclipse做如下配置
参考链接
http://jameszhao1987.iteye.com/blog/1468673
然后认识一下涉及的类
KeyGenerator类主要是用于生成密钥的(SecretKey 或是 Key)。
通过deskey = keygen.generateKey();但是这种是依靠类自己去创建密钥,而现实开发中都需要传入自己的私钥然后进行加密和解密。
因此这里选择的是使用
SecretKeyFactory类生成带有自定义私钥的Key类。
注意在使用前需要Security.addProvider(new SunJCE());即将加密包中的class注册到虚拟机当中。
通过SecretKeyFactory实例的generateSecret(KeySpec keySpec)来生产密钥。这里的keySpec我们传入DESedeKeySpec KeySpec = new DESedeKeySpec(input);input就是我们私钥对应的Hex.decode(KeyStr) (使用Hex需要使用bcprov-jdk14-116.jar)返回的数组.KeyStr就是我们的私钥字符串
SecretKeyFactory实例通过SecretKeyFactory.getInstance("DESede")获得。
得到密钥后就可以进行加密操作了,加密操作使用的是
Cipher类,
通过Cipher.getInstance(“DESede/CBC/PKCS5Padding”);获得cipher实例。
调用cipher.init(mode,secretKey,AlgorithmParameterSpec)进行初始化,之后就可以调用c.doFinal(input);来完成加密了。
mode是对应的加密和机密模式,对应的值为1和2,secretKey对应的是上面返回的密钥。
AlgorithmParameterSpec为对应的算法参数。如果为空jdk会默认生产一个对应值。
但是通常返回的是一个加密字符串,所以可以对doFinal方法返回的加密字节数组进行new String(Base64Encode(output), CodingType),即进行base64加密后转换成所需要的编码的字符串。
对加密字符串进行解密和上面比较相似,就是首先对机密串进行base64解密,然后获取密钥,将Cipher.init方法第一个参数设置成机密模式,最后对返回的解密字节数组进行new String(output, CodingType);字符串拼装。

然后讲一下密钥是如何获取的。密钥是长度是48的十六进制。所以获取时
使用下面的方法
StringBuffer key = new StringBuffer();
     Random random = new Random();
     for (int i = 0; i < 48; ++i) {
       int cursor = Math.abs(random.nextInt()) % 16;
       key.append(keyChars[cursor]);
     }
     return key.toString();
keyChars为0到F的字符数组。
即随机生成48个int数字。然后让生成的每个数字对16取余数。最后通过余数找到对应的16进制数。

分享到:
评论

相关推荐

    DES加密算法设计

    从网上下载的一个文章,感觉这个是讲解DES加密算法写的最好的文章了。拿来分享。

    js js DES 算法

    js_DES算法! 很值得下载看看!资源免费,大家分享!!

    最全Unix/Linux C实现DES和DES3算法

    项目需要:收集很多Unix/Linux C实现des系列算法源代码,不敢独享,分享出来,其中很多也是在CSDN上花积分获得~不容易哦~

    如何实现DES算法的语言性介绍

    des是密码学中的重要算法思想,现在将des实现方法整理出来与大家分享.

    python实现的DES加密算法和3DES加密算法实例

    本文实例讲述了python实现的DES加密算法和3DES加密算法。分享给大家供大家参考。具体实现方法如下: ############################################################################# # Documentation # #########...

    des加密算法(js+java)加密与解密结果相同

    des加密算法(js+java)加密与解密结果相同 包含三个文件 : des.js des.html ,用于实现前端脚本的加密与解密 des.java 用于后台的加密解密操作; 项目中正好用到,已经过验证,两个加密解密结果相同,分享给...

    C++实现des加密算法 实例

    des加密算法在实际应用中很常见,尤其是通信相关加密.该文件中提到的算法已经经过个人应用.感觉不错,所以分享出来,当初也找了不少时间

    PHP实现基于3DES算法加密解密字符串示例

    本文实例讲述了PHP实现基于3DES算法加密解密字符串。分享给大家供大家参考,具体如下: 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据...

    DES算法实现 DES.rar

    3、把根目录Web.config文件中的appSettings的DatabaseType值改为0(因为开 源版是Access数据库,想要SQL数据库请联系我们购买) 4、将/_data/database/下的mdb改名,后缀建议使用.config,同时修 改/_data/config/...

    des加密算法(js+java)js加密 java解密

    des加密算法(js+java)加密与解密结果相同 包含三个文件 : des.js des.html ,用于实现前端脚本的加密与解密 des.java 用于后台的加密解密操作; 项目中正好用到,已经过验证,两个加密解密结果相同,分享给...

    Python基于DES算法加密解密实例

    本文实例讲述了Python基于DES算法加密解密实现方法。分享给大家供大家参考。具体实现方法如下: #coding=utf-8 from functools import partial import base64 class DES(object): """ DES加密算法 interface: ...

    php对称加密算法DES和AES类.zip

    分享一个php对称加密算法DES和AES类,支持密钥:64/128/256 bit(字节长度8/16/32),支持算法:DES/AES(根据密钥长度自动匹配使用:DES:64bit AES:128/256bit),支持模式:CBC/ECB/OFB/CFB,密文编码:base64字符...

    Python3对称加密算法AES、DES3实例详解

    本文实例讲述了Python3对称加密算法AES、DES3。分享给大家供大家参考,具体如下: python3.6此库安装方式,需要pip3 install pycryptodome。 如有site-packages中存在crypto、pycrypto,在pip之前,需要pip3 ...

    C++中四种加密算法之DES源代码

    本篇文章主要介绍了C++中四种加密算法之DES源代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。

    Java最简单的DES加密算法实现案例

    下面小编就为大家带来一篇Java最简单的DES加密算法实现案例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    PHP对称加密算法DES,AES类.zip

    分享一个PHP对称加密算法DES,AES类,支持密钥:64/128/256 bit(字节长度8/16/32),支持算法:DES/AES(根据密钥长度自动匹配使用:DES:64bit AES:128/256bit)。

    c#通过DES加密算法加密大文件的方法

    本文实例讲述了c#通过DES加密算法加密大文件的方法。分享给大家供大家参考。具体实现方法如下: using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web;...

    DES加密java的完美实现源码

    此资源为des算法加解密的java完美实现,可导入环境直接运行。适合初学者对于des加密的学习和理解。资源分享出来,赚赚积分!感谢大家

    国密算法工具SmartTool_V1.3

    支持各种国密算法,例如:SM2,SM3,SM4, 还支持其它算法比如:3DES,MAC,AES,RSA; 还包含数据转换比如:ASCII和十六进制的互相转化, 非常值得分享的一个软件。

Global site tag (gtag.js) - Google Analytics