import heidu004.domain.EmployeeInfo;
import heidu004.persistence.EmployeeInfoDAOImpl;
import JAVA.io.UnsupportedEncodingException;
import JAVA.sql.SQLException;
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.ptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.MemoryBlockFactory;
public class Dll {
/* 
*WebInterface.dll中相关方法
* --------------------------------------------------------------------------------------------
*function EncryptPswStr(PswStr, ResultBuff: PChar; PswLen, BuffLen: Integer): Integer; stdcall;
字符串长度不能超过32位*加密密码字符串
*参数:
*PswStr:需要加密的密码字符串
*ResultBuff:存放加密后的密码字符串的缓冲区。该值为变参
*在调用本函数前,需要为这个缓冲区分配足够的内存空间来接受加密后生成的字符串。
*PswLen:需要加密的密码字符串的长度
*BuffLen:接受加密后生成的字符串的缓冲区的长度。
*这个长度不能大于ResultBuff实际拥有的内存空间长度,否则会造成缓冲区溢出而出现调用异常。
*返回值:
*32位整数,此值表示的是加密后生成的字符串的实际长度,小于或等于BufferLen。若把返回值赋值给N,
*而N小于BufferLen则表示ResultBuff缓冲区中只有前面的N个字节是有效的。
*--------------------------------------------------------------------------------------------
*function DecryptPswStr(PswStr, ResultBuff: PChar; PswLen, BuffLen: Integer): Integer; stdcall;
*解密密码字符串
*参数:
*PswStr:需要解密的密码字符串
*ResultBuff:存放解密后的密码字符串的缓冲区。该值为变参
*在调用本函数前,需要为这个缓冲区分配足够的内存空间来接受解密后生成的字符串。
*PswLen:需要解密的密码字符串的长度
*BuffLen:接受解密后生成的字符串的缓冲区的长度。
*这个长度不能大于ResultBuff实际拥有的内存空间长度,否则会造成缓冲区溢出而出现调用异常。
*返回值:
*32位整数,此值表示的是解密后生成的字符串的实际长度,小于或等于BufferLen。若把返回值赋值给N,
*而N小于BufferLen则表示ResultBuff缓冲区中只有前面的N个字节是有效的。
*--------------------------------------------------------------------------------------------
*function NotifyReadMeter(): Integer; stdcall;
*抄表通知
*参数:无
*返回值:
*32位整数,此值若为零表示抄表通知不成功,可能是抄表软件没有启动、抄表软件版本不正确等等原因。
*若不为零表示抄表通知已经成功。
*/
/*
* 加密
*/
public static final Integer EncryptPswStr(String PswStr, Pointer po,Integer PswLen,Integer BuffLen) throws NativeException, IllegalAccessExcep
tion{
/*
* 方法 一动态连接库的位置是系统目录C:\windows\system32(在web工程下时路径为 例tomcat\bin)
* System.loadLibrary("WebInterface");
* 注意事项如果该项目是web工程时需要将JNativeCpp.dll放到web 服务器的bin中
* 否则会报java.lang.IllegalStateException: JNative library not loaded, sorry ! 
* 不是web工程时需要将JNativeCpp.dll放入系统C:\windows\system32目录中
*/
System.loadLibrary("WebInterface");//我用的是方法一:WebInterface指的是动态链接库名
JNative n = Null;
n = new JNative("WebInterface","EncryptPswStr");
n.setRetVal(Type.INT);//返回类型整型Type.INT 
int i =0;
n.setParameter(i++,PswStr);//方法的了内部参数PswStr 为字符(Type.STRING)类型
n.setParameter(i++,po);//方法的了内部参数po 为字符(Type.STRING)类型   
n.setParameter(i++,PswLen);//方法的了内部参数PswLen 为字符(Type.STRING)类型
n.setParameter(i++,BuffLen);//方法的了内部参数BuffLen 为字符(Type.STRING)类型
n.invoke();//加载 
return Integer.RetVal()); 
}
/*
* 十六进制转换成字符
*/
private static String hex16Str(String theHex) { 
String theRst = ""; 
byte[] theByte = new byte[theHex.length() / 2]; 
try { 
for (int i = 0; i < theHex.length(); i += 2) { 
theByte[i / 2 ] = Integer.decode("0X"+ 
theHex.substring(i, i + 2)).byteValue(); 
theRst = new String(theByte, 0, theByte.length, "Shift_JIS"); //Shift_JIS日文编码表 
} catch (Exception Ue) { 
Ue.printStackTrace(); 
return theRst; 
/*
* 转字符换成十六进制
*/
private static String str16Hex(String theStr) { 
byte[] bytes; 
String result = ""; 
int tmp; 
String tmpStr; 
try { 
bytes = Bytes("Shift_JIS"); //Shift_JIS日文编码表 
for (int i = 0; i < bytes.length; i++) { 
if (bytes[i] < 0) { 
tmp = 256 + bytes[i]; 
&nb

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。