环境:tomcat6.X+struts2.X+MyIbatis+Spring3.x
加密:使用AES加密,将文件的字节码读取,对字节码进行加密后替换源文件
/** * * 字节加密 */ public static byte[] encrypt(byte[] data, String key) throws Exception { Key k = toKey(Base64.decode(key)); byte[] raw = k.getEncoded(); SecretKeySpec secretKeySpec = new SecretKeySpec(raw, ALGORITHM); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec); return cipher.doFinal(data); }
解密:
1、在tomcat的WebappClassLoader中修改源码(自动义类加载器);
2、修改spring源码Code包源码。
加密方法
public static byte[] decrypt(byte[] data, String key) throws Exception { Key k = toKey(Base64.decode(key)); byte[] raw = k.getEncoded(); SecretKeySpec secretKeySpec = new SecretKeySpec(raw, ALGORITHM); Cipher cipher = Cipher.getInstance(ALGORITHM); cipher.init(Cipher.DECRYPT_MODE, secretKeySpec); return cipher.doFinal(data); }
在 WebappClassLoader中解密
/** * 判断如需是需要解密的类进行数据处理 * */ //--------------------------------------start----------------------------------// byte []data=null; try { if(isDecode(name)){ System.out.println("2818:--&&&-"+name); data=AESUtils.decrypt(entry.binaryContent, key); }else{ data=entry.binaryContent; } } catch (Exception e) { e.printStackTrace(); } try { clazz = defineClass(name, data, 0, data.length, new CodeSource(entry.codeBase, entry.certificates)); //--------------------------------------end----------------------------------//
在spring的code包的SimpleMetadataReader修改器构造函数
// TODO 修改源码判断是否需要解密 SimpleMetadataReader(Resource resource, ClassLoader classLoader) throws IOException { InputStream is = resource.getInputStream(); ClassReader classReader = null; try { String name = ""; if (resource.getURI().toString().indexOf("jar:file") == -1) { name = resource.getFile().getAbsolutePath(); if (!"".equals(name) && isDecode(name, cams)) { byte[] data = inputStreamToByte(is); try { is = new ByteArrayInputStream(AESUtils.decrypt(data, key)); // is = new ByteArrayInputStream(data); } catch (Exception e) { e.printStackTrace(); } } } classReader = new ClassReader(is); } finally { is.close(); }
在LocalVariableTableParameterNameDiscoverer同样需要进行解密。
注:(此加密有弊端)
1、加密解密算法需保持一致。
2、加密加密密钥需是同一密钥。
相关推荐
apache-tomcat-8.5.87-src 源码修改,修改tomcat类加载器WebappClassLoaderBase,以支持加载 作了加密的web项目。
打包:将web项目打包成一个exe文件,客户直接双击、下一步就可以部署一个web项目。包括jdk、tomcat、mysql数据库这些繁琐的步骤都自动搞定。 加密:打包过程中对所有需要保护的类文件进行高强度加密,保护你的代码...
1. **系统设计**:项目旨在提供一个用户友好的Web界面,让用户能够轻松地对敏感信息进行加密和解密操作,确保数据传输和存储的安全性。 2. **技术实现**: - 利用了Python编程语言,结合Web框架如Flask或Django,...
RSA加密解密需要用到公钥和私钥,在线生成公钥私钥:http://web.chacuo.net/netrsakeypair 生成并使用后记得保存好公钥私钥。 3. 在第二步已经导出了加密(rsaEncrypt)和 解密(rsaDecrypt)的方法,在需要用到的...
Java Web 加解密 Java Web 开发中常见的加解密算法 Demo。 jBCrypt 算法
AES加解密,网页打开即可使用。查看源码可复制到自己项目中。
由于项目需要必须采用JS端来对字符串进行MD5,AES,Base64等加密解密,所以搜集和测试了这些相关的方法实现,可以通过打开WebRoot/index.html页面来测试代码
加密,解密工具类,可用于版权,字符串等加密,解密
b/s架构的项目,在web页面中难免会提交敏感数据到服务端,如登录页面的密码,一般情况下这些敏感是以明文提交的,但是我们提交的数据包在传输到服务端期间有可能被恶意的人监听和截获,那么我们就需要在向服务端发送...
通过使用该工具对项目中的webconfig等配置文件进行加密与解密,保护配置文件的敏感信息(数据库连接字符串)
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
这个基于Python技术栈的Web应用程序项目源代码提供了一个通用的框架,使得学习者能够学习如何构建可扩展的管理系统。通过深入研究源代码,我们将了解使用Python进行Web应用开发的关键技术和实践方法。 项目的核心...
记得我有个非常好的朋友曾经向我大倒苦水,原来他加了半个月的夜班,给别人开发了一套PHP程序,结果遇到了奸商,人家收了源代码说是先测试,然后就消失不见了,电话打不通,QQ也永远不在线了。 仔细想来,使用PHP...
rsa前端加密,java后台解密,java web项目,方便需要的同学
c++实现md5加密算法。一个vs2015的c++项目。
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
des加解密字符串和文件 1.1.5 redis 加锁,redis升级成2.8.2 freemarker工具类 1.1.6 spring websocket 实现在线聊天 maven升级jdk1.8 jetty9.2.4 web升级jdk1.7 tomcat7 1.1.7(maven only) 包名修改 从此不再...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...
CodematicDemoF3 是一个基于工厂模式的三层架构示例项目源码,基于VS2005 SP1开发(如果没有装SP1,web项目会打不开),结构更简洁,提供更多有效的示例源码参考。方便用户更好的理解和使用该架构进行开发,配合动软...
包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...