首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
keyword
lua
javascript
export
format
substring
buffer
config
rsa
cSharp
io
heatmap
solr
future
command
httpclient
spring
eval
string
input
erlang
python3
settings
range
perl
httprequest
const
subset
md5
hashtable
callback
runtime
filter
flutter
bash
object
header
cpython
cmd
less
php5
post
loops
schema
include
dll
c语言
tags
vba
expression
dockerfile
stream
uri
bytecode
function
web3
node.js
bitmap
metadata
php8
get
php7
jsp
chat
utf-8
java
ascii
数组
plugins
bit
dagger
js
golang
main
default
grid
install
text
hashcode
当前位置:
开发笔记
>
编程语言
> 正文
JAVA实现DES加密
作者:唐吉诃德 | 来源:互联网 | 2023-09-24 17:06
JAVA实现DES加密DES加密介绍DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,
JAVA实现DES加密
DES加密介绍
DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。虽然如此,在某些简单应用中,我们还是可以使用DES加密算法,本文简单讲解DES的JAVA实现。
JAVA实现
加密
代码有详细解释,不多废话。
注意:DES加密和解密过程中,密钥长度都必须是8的倍数
public byte[] desCrypto(byte[] datasource, String password) { try{ SecureRandom random = new SecureRandom(); DESKeySpec desKey = new DESKeySpec(password.getBytes()); //创建一个密匙工厂,然后用它把DESKeySpec转换成 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(desKey); //Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance("DES"); //用密匙初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, random); //现在,获取数据并加密 //正式执行加密操作 return cipher.doFinal(datasource); }catch(Throwable e){ e.printStackTrace(); } return null; }
解密
代码有详细注释,不多废话
private byte[] decrypt(byte[] src, String password) throws Exception { // DES算法要求有一个可信任的随机数源 SecureRandom random = new SecureRandom(); // 创建一个DESKeySpec对象 DESKeySpec desKey = new DESKeySpec(password.getBytes()); // 创建一个密匙工厂 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); // 将DESKeySpec对象转换成SecretKey对象 SecretKey securekey = keyFactory.generateSecret(desKey); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance("DES"); // 用密匙初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, random); // 真正开始解密操作 return cipher.doFinal(src); }
测试场景
例如,我们可以利用如上函数对字符串进行加密解密,也可以对文件进行加密解密,如:
//待加密内容 String str = "测试内容"; //密码,长度要是8的倍数 String password = "12345678"; byte[] result = DESCrypto.desCrypto(str.getBytes(),password); System.out.println("加密后内容为:"+new String(result)); //直接将如上内容解密 try { byte[] decryResult = des.decrypt(result, password); System.out.println("加密后内容为:"+new String(decryResult)); } catch (Exception e1) { e1.printStackTrace(); }
java
random
string
加密
算法
io
byte
key
get
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
string
iOS数据库Sqlite的SQL语句分类和常见约束关键字
本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ...
[详细]
蜡笔小新 2023-12-12 18:42:03
md5
开发笔记:加密&json&StringIO模块&BytesIO模块
篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ...
[详细]
蜡笔小新 2023-12-14 15:18:35
string
Java中包装类的设计原因以及操作方法
本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ...
[详细]
蜡笔小新 2023-12-12 15:48:10
string
Android系统源码分析Zygote和SystemServer启动过程详解
本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ...
[详细]
蜡笔小新 2023-12-11 17:46:46
string
GreenDAO快速入门
前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ...
[详细]
蜡笔小新 2023-12-11 12:31:00
io
Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ...
[详细]
蜡笔小新 2023-12-14 17:57:01
buffer
C#生成随机数的三种方法及其问题分析
本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ...
[详细]
蜡笔小新 2023-12-14 14:15:30
string
JVM 学习总结(三)——对象存活判定算法的两种实现
本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ...
[详细]
蜡笔小新 2023-12-13 18:59:46
md5
南邮ctf-web的writeup
本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ...
[详细]
蜡笔小新 2023-12-13 10:58:55
range
php 主动断掉http,怎么在PHP项目中实现一个HTTP断点续传功能
怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ...
[详细]
蜡笔小新 2023-12-12 17:17:29
string
java boolean 大小_java boolean 大小
先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ...
[详细]
蜡笔小新 2023-12-12 13:36:56
input
Swing组件及其用法,图标接口的定义和创建方法
本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ...
[详细]
蜡笔小新 2023-12-11 21:03:59
input
基于Socket的多个客户端之间的聊天功能实现方法
本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ...
[详细]
蜡笔小新 2023-12-11 15:55:40
string
Java面经整理及相关概念解析
本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ...
[详细]
蜡笔小新 2023-12-10 22:17:08
range
十大经典排序算法动图演示+Python实现
本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ...
[详细]
蜡笔小新 2023-12-10 19:28:59
唐吉诃德
这个家伙很懒,什么也没留下!
Tags | 热门标签
keyword
lua
javascript
export
format
substring
buffer
config
rsa
cSharp
io
heatmap
solr
future
command
httpclient
spring
eval
string
input
erlang
python3
settings
range
perl
httprequest
const
subset
md5
hashtable
RankList | 热门文章
1
可视化领域 SVG
2
如何将手机上的文件传到电脑上(如何将手机上的文件传到电脑中)
3
分页 截取字符加省略号 去掉特殊字符
4
ⅰsee是什么意思_如何评价电影《诛仙Ⅰ》?
5
人脸识别_人脸识别的未来:对智慧城市有何影响
6
配置 Sublime Text 2参数
7
Ubuntu16.04安装CDH5.14.2
8
win10进游戏无响应怎么办?
9
.NET HttpClient的缺陷和文档错误让开发人员倍感沮丧
10
jdk5后并发线程优雅的创建方式ExecutorService+Callable比thread和runable两种方式简单和实用,可以替代后两者。...
11
java图片上显示div_java 显示图片预览DIV
12
org.apache.commons.lang.exception.ExceptionUtils.getRootCause()方法的使用及代码示例
13
开发笔记:poj 1050 最大子矩阵
14
1.对象和类的简单解析
15
Javase基础语法篇
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有