大家好,今天小编关注到一个比较有意思的话题,就是关于java语言加密的问题,于是小编就整理了3个相关介绍Java语言加密的解答,让我们一起看看吧。
有什么办法能针对Java加密?
针对Java,现提供2种加密解决办法:
1、HASP加密锁提供的外壳加密工具中,有一个叫做DataHASP数据加密的功能,这个功能可以很好的防止反编译而去掉api的调用,大家知道:硬件加密锁的保护原理就是让加密过的软件和硬件紧密相连,调用不会轻易地被剔除,这样才能持久地保护您的软件不被盗版,同时,这种方式使用起来非常简单,很容易被程序员掌握,要对一个软件实现保护,大约只需几分钟就可以了。下面简要介绍一下它的原理:运用HASP HL的外壳工具先把当作一个数据文件来进行加密处理,生成新的java程序,因为这个加密过程是在锁内完成的,并采用了128位的AES算法,这样,加密后的java程序,无论你采用什么样的反编译工具,都是无法反编译出来。您的软件也只有被加密过的java解释器并有加密锁的情况下才能正常运行,如果没有加密锁,程序不能运行,从而达到真正保护您的软件的目的,该方法只支持Windows平台。
2、HASP提供专门针对java外壳加密工具,直接加密jar或war包,防止反编译,目前支持J2SE,J2EE主要支持容器为TOMCAT6.0以上,可在Windows和Linux平台下运行,如果情况适合则是最简单的使用方法。
java服务器程序加密,如何做?
目前常见的所谓java 编译代码加密基本都是可破解加密,并不能真正的实现加密,因为java是开源的,使用密码加密必然存在运行时解密,只是增加了下解密难度而已,时间只有足够都是可以破译掉的。要么就修改jdk和jre底层技术,但是难度相当大。但是目前常用针对防止反编译还是有比较不错的方法的。此处不讨论加密狗、远程访问授权等加密方法,已经有人介绍过了,不再赘述,而且针对单机简单的部署并不好用,也不能让客户觉着我做个程序你还担心我反编译你的代码而使用加密狗。现在介绍两类个人觉着还行的方法。
比如码云就有人贡献工具针对此方法:
https://gitee.com/roseboy/classfinal
主要支持三种模式 1.无密码模式 2.机器绑定 3.启动加密后的jar ,有意向的可以跳进链接看使用方法.
二.代码混淆技术
Allatori混淆技术,支持命名混淆,流混淆,调试信息混淆,字符串混淆,以及水印技术。对于教育和非商业项目来说这个混淆器是免费的。新版本支持war和ear文件,并且允许对需要混淆代码的应用程序添加有效日期。 此类混淆技术本人实际项目中正式测试验证比较不错,反编译后代码基本很难反推,甚至许多类文件反编译后为方法内容为空,效果很不错。
再有就是ProGuard等其它混淆技术,网上有很多教程可以查阅后抉择使用。
常见的做法是一个加密狗 插在服务器上面,还有一种就是发放一个授权码,这个授权码是绑定机器码的,在程序启动的时候根据授权码来识别是不是当前服务器,如果不是则程序全部不可访问
Java怎么给WebService加密?
1.1.1 验证码加密接口中的验证码参数,均需要通过DES + BASE64加密,1.1.2 报文签名通票平台接入端分配一个cp_code和csecret,双方均采用如下规则对报文进行签名:l 第一步:签名源串构造规则:将请求参数按照如下规则组织“a=x&b=y&c=z&……”,每一个参数按参数名的自然数序排列。(按字典序排列)l 第二步:使用Hmac-SHA1加密算法,将Step1中的到的源串以及实现分配的密钥(csecret )进行加密;l 第三步:将Step2中得到的加密字串进行Base64编码。签名密钥(secret):abcdefghijklmnopqrstuvwx/*** 返回签名之后的JSON对象** @param json原JSON对象* @param secret密钥* @return* @throws Exception*/publicstatic string doSign(JSONObjectjson,String secret) throws Exception {String baseStr = "";for (Object key : newTreeSet(json.keySet())) {baseStr += ("&" + key + "=" + json.get(key));}SecretKeySpec key = newSecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA1");Mac mac = Mac.getInstance("HmacSHA1");mac.init(key);byte[] bytes = mac.doFinal(baseStr.substring(1).getBytes("UTF-8"));json.put("signature", new String(Base64.encodeBase64(bytes)));return json.toString();}
到此,以上就是小编对于java语言加密的问题就介绍到这了,希望介绍关于java语言加密的3点解答对大家有用。