java服务器程序加密,如何做?
常见的做法是一个加密狗 插在服务器上面,还有一种就是发放一个授权码,这个授权码是绑定机器码的,在程序启动的时候根据授权码来识别是不是当前服务器,如果不是则程序全部不可访问
目前常见的所谓java 编译代码加密基本都是可破解加密,并不能真正的实现加密,因为java是开源的,使用密码加密必然存在运行时解密,只是增加了下解密难度而已,时间只有足够都是可以破译掉的。要么就修改jdk和jre底层技术,但是难度相当大。但是目前常用针对防止反编译还是有比较不错的方法的。此处不讨论加密狗、远程访问授权等加密方法,已经有人介绍过了,不再赘述,而且针对单机简单的部署并不好用,也不能让客户觉着我做个程序你还担心我反编译你的代码而使用加密狗。现在介绍两类个人觉着还行的方法。
一.运行时输入密码,密码隐藏不显示,也不记录到日志的方法
比如码云就有人贡献工具针对此方法:
主要支持三种模式 1.无密码模式 2.机器绑定 3.启动加密后的jar ,有意向的可以跳进链接看使用方法.
二.代码混淆技术
Allatori混淆技术,支持命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。新版本支持war和ear文件格式,并且允许对需要混淆代码的应用程序添加有效日期。 此类混淆技术本人实际项目中正式测试验证比较不错,反编译后代码基本很难反推,甚至许多类文件反编译后为方法内容为空,效果很不错。
再有就是ProGuard等其它混淆技术,网上有很多教程可以查阅后抉择使用。
java中使用MD5加密后也不安全了吗?
md5加密是为了原信息的准确性,因为md5是不可逆加密。
有两个例子,比如
1. 存在数据库中的密码,加密后就算被人看到也不知道原密码是什么,但是可以对输入的原密码加密,然后两者比较用于验证。
2. 发布软件的时候同时发布md5码,防止恶意篡改原程序
MD5是哈希算法,和具体的语言没有关系。
MD5的破译工作主要体现在强碰撞和弱碰撞两方面,在2004年的欧密会议上我国的王小云宣布了破译的方法,可在合理时间内找到弱碰撞,从这一点上说是不安全的。
但是从实际角度看,MD5还是可以服役的,如果安全需求不高。
如安全需求高,建议使用sha族哈希算法。
MD5是hash算法本来就不是用来加密的,只不过因为其极少的碰撞才被大量用来加密. 完全可以用穷举法去尝试.... MD5是hash算法本来就不是用来加密的,只不过因为其极少的碰撞才被大量用来加密. 完全可以用穷举法去尝试.... MD5是hash算法本来就不是用来加密的,只不过因为其极少的碰撞才被大量用来加密. 完全可以用穷举法去尝试.... MD5是hash算法本来就不是用来加密的,只不过因为其极少的碰撞才被大量用来加密. 完全可以用穷举法去尝试....
我认为到目前为止md5加密还是有效的,但是网络上总是有一些人能破解部分md5的密码,也仅仅是部分。有一些常用的加密方式被存进了数据库,有一些人爬出来也是正常的。所以我们到现在还是用md5可靠

