WindowBuilder的DES文件加密系统实现

WINDOWS动态链接库(DLL)-文本加密和解密 文本加密和解密 阅读详情

WindowBuilder基于DES简单文件加密系统

  • WindowBuilder可能是每个Java程序员都了解的一项简单的技术,它涵盖了一些原来的GEF+EMF编程技术所没有的条件,比如自己绘制外观的layout布局,目前,WindowsBuilder已经占领了大部分JAVA的windows平台平面级应用开发,已经走向市场化。
  • 就目前的市场前景来看,就业形式不容乐观,国内软件行业虽然暴涨,但是日前java的就业率依然很低落,闲来无事,一年前写了一个小的练手项目,当然对于编程大手来说这就算不上是项目,当然有些代买也是仿写网上的主流加密,底层并不用像C++那样自己构思算法。

主要思路

  • WindowsBuilder画框
  • 文件加密类
  • 文件拖动入框显示文件路径类
  • 随机生成密钥类

1. 安装eclipse WindowBuilder插件

首先用eclipse搭建可视化组件,不要用老版本eclipse。具体方法请点击链接: 链接点击: [ 百度经验 ]

2.画框

GUI外观需要:

组件组件显示名
JButton加密 解密
JPanel
JLabel标签
JTextField输入被加密文件位置

3.文件加密类

内容为:

public class DESEncrypt {
	Key key;

	public DESEncrypt(String str) {
	    getKey(str);//生成密匙
	  }

	/**
	 * 根据参数生成KEY
	 */
	public void getKey(String strKey) {
		try {
			KeyGenerator generator = KeyGenerator.getInstance("DES");
			generator.init(new SecureRandom(strKey.getBytes()));
			this.key = generator.generateKey();
			generator = null;
		} catch (Exception e) {
			throw new RuntimeException("Error initializing SqlMap class. Cause: " + e);
		}
	}

	/**
	 * 文件file进行加密并保存目标文件destFile中
	 *
	 * @param file 要加密的文件
	 * @param destFile 加密后存放的文件名
	 */
	public void encrypt(String file, String destFile) throws Exception {
		Cipher cipher = Cipher.getInstance("DES");
		// cipher.init(Cipher.ENCRYPT_MODE, getKey());
		cipher.init(Cipher.ENCRYPT_MODE, this.key);
		InputStream is = new FileInputStream(file);
		OutputStream out = new FileOutputStream(destFile);
		CipherInputStream cis = new CipherInputStream(is, cipher);
		byte[] buffer = new byte[1024];
		int r;
		while ((r = cis.read(buffer)) > 0) {
			out.write(buffer, 0, r);
		}
		cis.close();
		is.close();
		out.close();
		JOptionPane.showMessageDialog(null, "加密成功!", "消息提示", JOptionPane.INFORMATION_MESSAGE);
	}

	/**
	 * 文件采用DES算法解密文件
	 * 
	 * @param file 已加密的文件
	 * @param destFile 解密后存放的文件名
	 */
	public void decrypt(String file, String dest) throws Exception {
		Cipher cipher = Cipher.getInstance("DES");
		cipher.init(Cipher.DECRYPT_MODE, this.key);
		InputStream is = new FileInputStream(file);
		OutputStream out = new FileOutputStream(dest);
		CipherOutputStream cos = new CipherOutputStream(out, cipher);
		byte[] buffer = new byte[1024];
		int r;
		while ((r = is.read(buffer)) >= 0) {
			cos.write(buffer, 0, r);
		}
		cos.close();
		out.close();
		is.close();
		JOptionPane.showMessageDialog(null, "解密成功!", "消息提示", JOptionPane.INFORMATION_MESSAGE);
	}
}

4.拖拽入框显示文件路径类

public class FileTransferHandler extends TransferHandler { 
    private static final long serialVersionUID = 1L;
	private JTextField textarea;

	public FileTransferHandler(JTextField filePathList) {
		this.textarea = filePathList;
	}

	public boolean importData(JComponent c, Transferable t) {
		try {
			List<?> files = (List<?>) t.getTransferData(DataFlavor.javaFileListFlavor);
			// FileReader reader = new FileReader((File)files.get(0));
			// textarea.read(reader, null);
			Iterator<?> iterator = files.iterator();
			while (iterator.hasNext()) {
				File f = (File) iterator.next();
				if (f.isFile()) {
					textarea.setText(f.getAbsolutePath());
				} else {
					textarea.setText("不是标准文件");
				}
			}
			// reader.close();
			return true;
		} catch (UnsupportedFlavorException ufe) {
			ufe.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return false;
	}
 	
	public boolean canImport(JComponent c, DataFlavor[] flavors) {
		for (int i = 0; i < flavors.length; i++) {
			if (DataFlavor.javaFileListFlavor.equals(flavors[i])) {
				return true;
			}
		}
		return false;
	}
}

5.生成随机密钥类

public class StringRandom {
	public String RandomString(int length) {
		String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		Random random = new Random();
		StringBuffer buf = new StringBuffer();
		for (int i = 0; i < length; i++) {
			int num = random.nextInt(62);
			buf.append(str.charAt(num));
		}
		return buf.toString();
	}
}

6.成型图片:

  • WindowsBuilder画框,github上有的皮肤包高大上了。
    用的是quaqua的皮肤
  • 加密、解密成功后。
  • 这是打开路径后的内容。
  • 拖拽文件至路径框上边,也可的到文件的绝对路径
    是不是很高大上呢,看起来很复杂,其实实际写起来很简单,只有亲自动手做一些东西才能有所体现。文件加密器就这样做完了,谢谢您的关注!
Powerbuilder中轻松实现加密功能 标准加密函数,可与多种加密手段结合,轻松实现自己的数据加密程序。 立即下载

相关推荐

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

较之前上传版本增加了base64编码功能, md5、des、base64都增加了专门的unicode调用声明,方便多语言操作, 代码里有一个拖拽文件显示路径的sle

PB实现国密SM2/SM3/SM4算法(DLL方式)

文章目录SM4SM3SM2 SM4 SM3 SM2

JasonFriday的博客 1万+

PB DES64加密解密

PB 可用的DES64加密解密DLL Function int b64_size(ulong size,ulong flag) Library "des64.dll" Function int b64_des(ref String in,ref string out,string key,ulong size,ulong flag)Library "des64.dll"

利用PBFunc在Powerbuilder中进行国密SM4的加密解密操作

利用PBFunc的n_pbfunc_cryp对象可以很方便的进行SM4的加密解密操作,其中ECB不需要向量IV,其它模式需要IV 代码下载地址:https://download.youkuaiyun.com/download/my_aa/12309197 SM4加密: //可用 http://aks.jd.com/tools/sec/ 对比结果 string ls_data ls_data = sle...

my_aa的专栏 2675

pb des 加密 解密 dll 示例

pb des 加密 解密 dll 示例 运行界面http://hi.youkuaiyun.com/attachment/201101/25/0_1295999881op80.gif

pb9 调用 des64.dll 做的加密解密demo

pb9 调用 des64.dll 做的加密解密demo 创建了两个函数: //************************************************************************** //名称: gf_Encrypt (as_string) //功能: 将明文加密成密文 //参数: as_string , 明文 //返回: 密文 //************************************************************************** //************************************************************************** //名称: gf_UnEncrypt (as_pass) //功能: 将密文解密成明文 //参数: as_pass , 密文. //返回: 明文 //************************************************************************** 调用的函数如下: Function int b64_size(ulong size,ulong flag) Library "des64.dll" Function int b64_des(ref String in,ref string out,string key,ulong size,ulong flag)Library "des64.dll" 描述: 对一个字符串加密 Return None Access public Argument DataType Description Szin string 需加密的字符串 szout string 加密后输出字符串 key string 密钥 inlen int 需加密的字符串的长度 flag uint 0:解密,1:加密

RSA加密算法及代码示例

以下代码使用PowerBuilder作为示例 1、数据加密概述 早在几千年前人类就已经有了通信保密的思想和方法。但直到1949年,信息论创始人香农发表著名文章,论证了一般经典加密方法得到的密文几乎都是可破译的。密码学才得以进入了一个新的发展时期。70年代后期,美国的数据加密标准DES和公开密钥密码体制的出现成为近代密码学发展史上的两个重要里程碑。 公开密钥密码体制的概念是由Difie与H

LVXIANGAN的专栏 6430

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

PB可用md5加密、des加解密DLL,附Powerbilder9.0调用例程。

PB混淆加密大师(powerbuilder防止反编译,pb混淆器,PB加壳,支持5-12)

PowerBuilder混淆器v2010.11.01说明书 目录: 一.相关知识简介 二.历史 三.本软件特点 四.注册 五.在线认证 六.混淆 七.如何购买 八.服务与升级 九.下载地址 十.联系方式 十一。本版本改进 十二。开发历史与修改日志 正式版价格参看:http://www.mis2erp.com 图片: [img]http://dl.ite...

iteye_6642的博客 1407

基于java实现DES算法加密报告相关

使用java编写的Des加密项目,从底层实现加密过程,未使用java加密库

实测对比:DeepSeek、豆包、千问三大AI模型生成测试用例谁更强?(附完整代码)

本文通过实测对比了DeepSeek、豆包、千问三大AI模型在生成测试用例方面的表现。文章提供了完整的Python代码实现,详细分析了各模型在用例完整性、准确性、边界覆盖及幻觉控制等维度的差异,并分享了工程化集成与多模型融合等优化策略,旨在帮助测试团队选择合适工具以提升工作效率。

ik6789012的博客 946

PowerBuilder--Aes128加解密

通过C#开发Com控件,注册到系统,然后由pb通过OLEObject进行调用 原文:https://www.cnblogs.com/eric_ibm/archive/2012/07/06/dll.html 代码(VS2010)+ 动态库:https://pan.baidu.com/s/17jFggInvIaYD_kEDqHhRpg PB代码: //==============...

1685

海康VisionMaster全局通信实战:从数据接收到流程触发

本文详细解析了海康VisionMaster全局通信的实战应用,重点阐述了如何通过配置通信模块与编写全局脚本,实现从外部设备(如PLC)接收数据并触发内部视觉流程。文章以TCP/IP通信为例,深入讲解了数据接收、解析、全局变量设置及流程触发的核心代码与调试技巧,帮助用户打通自动化项目中的设备联动关键环节。

weixin_29295541的博客 569

PowerBuilder 软件加密实验

Pb读硬盘序列号和加密rsa算法 很实用的代码,环境:PB9.0 说明: 大家知道,每当我们格式化软盘或硬盘时系统都会给它分配一个序列号,即用DOS命令dir显示出的"Volume Serial Number is 0A41-0E0A"。该序 列号是随机产生的,且具有唯一性。也就是因为这个原因许多软件的测试版本利用该项技术使测试版一旦过了限定期限就不能再使用,即使将该软件 重新安装也

FireflyBeacon的专栏 1462

面试中常考的数学题——截木棍、圆上取点、赛马、红蓝墨水,测试毒药、坐到正确座位问题

文章目录1.将一根木棒截成三段,问能够组成三角形的概率;2.在圆上任取三点,问能够组成锐角、直角、钝角三角形的概率;3.共有25匹马,找出最快的3匹,只有5个赛道,每次比赛只能得到5匹马的速度排序,最少需要多少次比赛;4 有两瓶红蓝墨水,体积一样,现在从红墨水中舀一勺加入蓝墨水中,搅拌均匀后,在从蓝墨水中舀一勺加到红墨水中,试问这两瓶墨水哪瓶纯度更高。 1.将一根木棒截成三段,问能够组成三角形的概率; 来源:https://blog.youkuaiyun.com/weixin_41245919/article/deta

weixin_41558411的博客 4906

深入解析CAN总线BusOff故障的检测与恢复机制

本文深入解析了CAN总线BusOff故障的检测与恢复机制。BusOff是CAN节点因发送错误过多而被强制离线的一种严重状态。文章详细阐述了其触发原理,即发送错误计数器(TEC)超过255,并重点介绍了通过软件实现的快慢恢复机制,以增强网络在异常情况下的稳定性和韧性。

weixin_29158047的博客 525

Powerbuilder混淆,加密(powerbuilder防止反编译,pb混淆器,PB加壳,支持5-12) obfuscator for PowerBuilder

技术路线图: 版本: pkb2.5 pb5,6,7,8,9,10,10.5,11,11.5,12 版本为pbvm.dll的版本,如pbvm115.dll。而不是指开发工具的版本。因为一个vm支持多个细微版本。用于powerbuilder5-12的代码混淆和加密。做这程序的目的很简单,因为我一直在用powerbuilder做项目。时间大约有5年了。 曾撰文把pb比作钥匙链上的指甲剪,随拿随用,方便简单,但又不乏强大。防止破解是软件发行时最关心的问题。自2009.6开始研究pbd文件格式。同期开始开发反编译

chengg0769 平淡无奇见真知 独立博客: http://blog.mis2erp.com 2万+

飞牛fnNAS个人小账本导入微信账单

本文介绍了将微信支付账单导入ezBookkeeping个人记账系统的详细方法。首先通过微信申请导出账单文件,接收后需进行Excel预处理:删除前导行、添加账户和分类列、整理金额格式等。在ezBookkeeping中需预先设置"微信"分类和账户。导入时需注意列映射关系,包括交易时间、账户名称等关键字段的对应设置。文章还提到处理交易标签、格式转换等细节问题,并建议避免使用"修改余额"功能。该方法同样适用于支付宝账单导入,解决了直接导入可能出现的格式不兼容问题。

dgnankai的专栏 482

PB实现DES加解密

文章目录填充模式加密模式ECB模式加解密操作CBC模式加解密操作源代码 填充模式 加密操作前需要将明文分解成长度为8的块,若明文长度不是8的倍数则需要填充到8的倍数,以下是两张填充方式: PKCS5:若数据需要填充n个字节才能对齐,则填充的每个字节值都是n;若数据已对齐,则填充一个长度为8的块,填充的每个字节值都是8 Zero:数据长度对齐时不填充,否则填充0 加密模式 ECB:电码本模式 CBC...

JasonFriday的博客 3327

华为OD机试 - 猴子吃桃 - 二分查找(Java 新系统 100分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 3850

基于ZYNQ的HP总线与DDR交互:实现PL与PS高效数据传输的完整指南

本文将深入探讨如何通过AXI HP总线实现PL与PS的DDR交互,结合代码示例、硬件配置与创新优化,助力开发者掌握这一关键技术。ZYNQ内部通过AXI HP接口直接连接PL与DDR控制器,PL通过AXI协议发送读写请求,绕过PS的CPU直接操作DDR。通过AXI HP总线实现PL与PS的DDR交互,开发者可充分发挥ZYNQ异构架构的优势。在Xilinx ZYNQ系列芯片中,PS(Processing System)与PL(Programmable Logic)的协同设计是其核心优势。

QQ_778132974的博客 1223

【笔记】加密算法:PBEncrypt(hash消息摘要:MD5、SHA;对称加密:DES、AES;非对称加密:RSA)

整理加密算法的多种种类、作用、原理、理论实现、Java实现 如:MD5、SHA、DES、AES、RSA 摘要 🤐、对称 🔐、非对称 🎺

LawssssCat的博客 3500

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

下一篇: C++驱动基础
HansMa
博客等级 码龄12年 24粉丝 49原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值