300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Java实现密码学工具 集成了对称加密算法DES AES IDEA 公开加密算法RSA ECC 散列

Java实现密码学工具 集成了对称加密算法DES AES IDEA 公开加密算法RSA ECC 散列

时间:2020-10-24 23:11:34

相关推荐

Java实现密码学工具 集成了对称加密算法DES AES IDEA 公开加密算法RSA ECC 散列

密码学综合工具

前言git网址项目结构项目预览String与byte[]互转通过`String`类转换通过`Base64`互转[jdk-8]

前言

我们网络信息安全的实验。。。要我们找各种算法源代码,其实这倒不是很难,就是有点费时间。我综合了网上找到的代码,用Java自制了一个密码学工具。里面包含了对称加密算法 DES,AES,IDEA,公开加密算法 RSA,ECC,散列算法 MD5,SHA1,CRC32,以及 RSA,DSA,ECDSA 实现数字签名验证示例。

所有加密算法都是我辛辛苦苦找的可以运行的。。然后修改了调用接口,最后用Base64编码将结果展示为 String 字符串,我可以保证每个算法都可以正确的加密解密,但是不能保证算法本身的正确性

由于只是一个实验用的小工具,所以很多异常和不人性化的地方没有处理。我觉得这工具本身价值不是很大,但是找能运行的开源密码学算法真的脑壳疼,这里集成了上面提到的所有算法源码(下面有项目结构),有需要可以自取。

git网址

/szluyu99/Encryption-And-Decryption-By-Yu

项目结构

项目预览

这个是俺之前看到的一个小demo,感觉很骚气,就拿来当主界面骚一下。

点击打乱~

对称加密中,DES、DES2表示DES算法的两种实现源码,AES、IDEA同理。

公开加密里,RSA、RSA2表示RSA的两种源码实现。ECC同理,不过ECC3好像忘了做了,不管了。

散列算法里包含了MD5,SHA1,CRC32。withSalt表示加盐

数字签名暂时还没放到图形化界面上,但是项目里包含了可以运行的demo。

破解散列表的话,后来采用了 rainbowcrack 和 MD5Crack3.0,UltraCrackingMachine 等几个现成的软件,很好用,就没有放上去了。。

以后有机会把这个软件做完。(好像每个软件我都是这么想的)

下面补充一下 String 与 byte[] 互转的笔记。

String与byte[]互转

通过用例学习Java中的byte数组和String互相转换,这种转换可能在很多情况需要,比如IO操作,生成加密hash码等等。

一般除非特殊需求,否则不要将它们互相转换,他们分别代表了不同的数据,专门服务于不同的目的,通常String代表文本字符串byte[]针对二进制数据

这两天在做网络安全的密码学实验,自己写了一个小工具,集成网上找到的对称加密,公开加密,散列算法等。但是网上很多算法是通过byte[]进行编码与解码,对于我们来说不方便展示,因此可以通过 Base64 转成字符串来展示。

通过String类转换

用String.getBytes()方法将字符串转换为byte数组,通过String构造函数将byte数组转换成String

注意:这种方式使用平台默认字符集

public class StringByteArrayExamples {public static void main(String[] args) {// StringString string = "hello world";// String 转 byte[]byte[] bytes = string.getBytes();// byte[] 转 StringString s = new String(bytes);System.out.println("Decoded String : " + s);}}

hello world

通过Base64互转[jdk-8]

Base64是一种将二进制数据编码的方式,正如UTF-8UTF-16是将文本数据编码的方式一样,所以如果你需要将二进制数据编码为文本数据,那么Base64可以实现这样的需求。

从 Java 8 开始可以使用Base64这个类。

import java.util.Base64;public class StringByteArrayExamples {public static void main(String[] args) {// byte[]byte[] bytes = "hello world".getBytes();// byte[] 转 StringString encoded = Base64.getEncoder().encodeToString(bytes);// String 转 byte[]byte[] decoded = Base64.getDecoder().decode(encoded);System.out.println( new String(decoded) );}}

hello world

Java实现密码学工具 集成了对称加密算法DES AES IDEA 公开加密算法RSA ECC 散列算法MD5 SHA1 CRC32 以及RSA DSA ECDSA数字签名验证示例。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。