RSA 是常用的非对称加密算法。最近使用时却出现了“不正确的长度”的异常,研究发现是由于待加密的数据超长所致。
RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行。
RSA加密对明文的长度是有限制的,如果加密数据过大会抛出如下异常:
Exception in thread “main” javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes
at com.sun.crypto.provider.RSACipher.a(DashoA13*..)
at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..)
at javax.crypto.Cipher.doFinal(DashoA13*..)
RSAUtils.java
package security;
import java.io.ByteArrayOutputStream;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;… 阅读全文
当spring 容器初始化和WEB项目启动加载
在做web项目开发中,尤其是企业级应用开发的时候,往往会在工程启动的时候做许多的前置检查。
比如检查是否使用了我们组禁止使用的Mysql的group_concat函数,如果使用了项目就不能启动,并指出哪个文件的xml文件使用了这个函数。
而在Spring的web项目中,我们可以介入Spring的启动过程。我们希望在Spring容器将所有的Bean都初始化完成之后,做一些操作,这个时候我们就可以实现一个接口:
package com.yk.test.executor.processor
public class InstantiationTracingBeanPostProcessor implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
//需要执行的逻辑代码,当spring容器初始化完成后就会执行该方法。
}
}
同时在Spring的配置文件中,添加注入:
<!– 当Spring容器启动完成后执行下面的这个Bean –>
<bean class=”com.yk.test.executor.processor.InstantiationTracingBeanPostProcessor”/>
但是这个时候,会存在一个问题,在web 项目中(spring mvc),系统会存在两个容器,一个是root application context ,另一个就是我们自己的 projectName-servlet context(作为root application context的子容器)。
这种情况下,就会造成onApplicationEvent方法被执行两次。为了避免上面提到的问题,我们可以只在root application … 阅读全文
下载地址
http://proguard.sourceforge.net/
启动proguard
解压下载的proguard4.4beta3,解压后进入lib文件把proguard.jar拷贝到自己新建的文件夹里如图:

把需要混淆的jar和jar所依赖的包也放到新建的文件夹,都放在一起,如下图。

写一个配置文件,名称自己定,举个简单配置文件例子,内容如下,其中-injars:是你需要混淆的jar,-outjars:是你混淆后输出的jar,-libraryjars:是你混淆的jar需要所依赖的jar包,后面的不在一一说明,可以参考proguard文档,配置文件可以参考文档来对自己混淆的需求来写配置文件。
-injars TheFirstDesktopApplication1.jar
-outjars TheFirstDesktopApplication1_out.jar
-libraryjars <java.home>/lib/rt.jar
-libraryjars appframework-1.0.3.jar
-libraryjars swing-worker-1.1.jar
-printmapping proguard.map
-overloadaggressively
-defaultpackage ”
-allowaccessmodification
-dontoptimize
-keep public class *
{
public protected *;
}
-keep public class org.**
-keep public class it.**
…
阅读全文
在web项目中,大家都已经非常熟悉其架构流程了。都说Cache是万金油,哪里不舒服抹哪里。这些流程中,几乎每个环节都会进行cache。 从浏览器到webserver,到cgi程序,到DB数据库,会进行浏览器cache,数据cache,SQL查询的cache等等。对于fastcgi 这里的cache,很少被使用。去年年底,我对nginx的fastcgi_cache进行摸索使用。在我的测试过程中,发现一些WIKI以及网络上没被提到的注意点,这里分享一下。

这里是我的NGinx配置信息
01
02
03
04
05
06
07
08
09
10
11
12
13
|
#增加调试信息
add_header X-Cache-CFC "$upstream_cache_status - $upstream_response_time" ;
fastcgi_temp_path /dev/shm/nginx_tmp;
#cache设置
fastcgi_cache_path /dev/shm/nginx_cache levels=1:2 keys_zone=cfcache:10m inactive=50m;
fastcgi_cache_key "$request_method://$host$request_uri" ;
fastcgi_cache_methods GET HEAD;
fastcgi_cache cfcache;
|
…
阅读全文
Notepad++ 是一款非常有特色的编辑器,是一款开源软件,支持的语言: C, C++ , Java , C#, XML, HTML, PHP, Javascript。

notepad++ 是一款非常有特色的编辑器,是开源软件,可以免费使用。 功能有:
①、内置支持多达 27 种语法高亮度显示(囊括各种常见的源代码、脚本,值得一提的是,完美支持 .nfo 文件查看),也支持自定义语言;
②、可自动检测文件类型,根据关键字显示节点,节点可自由折叠/打开,代码显示得非常有层次感!这是此软件最具特色的体现之一;
③、可打开双窗口,在分窗口中又可打开多个子窗口,允许快捷切换全屏显示模式(f11),支持鼠标滚轮改变文档显示比例,等等;
④、提供数个特色东东,如 邻行互换位置、宏功能,等等…现在网上有很多文件编辑器,这个却是不可多得的一款,不论是日常使用还是手写编程代码,都能让你体会到它独有的优势和方便。
支持的语言: c, c++ , java , c#, xml, html, php, javascript
下载地址:http://www.downg.com/soft/8049.html
下面介绍下国人常用的插件
插件下载地址(实时更新):http://sourceforge.net/projects/npp-plugins/files/
Notepad++插件的使用方法:… 阅读全文