import java.io.FileInputStream;
import java.io.PrintStream;
import java.security.KeyFactory;
import java.security.Signature;
import java.security.spec.X509EncodedKeySpec;
import javax.servlet.http.HttpServletRequest;string pkFile = "属于一个文件publickeys";
public static boolean validateResponse(HttpServletRequest request, String pkFile)
{
String queryString = request.getQueryString();
int i = queryString.indexOf("&Signature");
String data1 = queryString.substring(0, i);
String data = URLUTF8Encoder.decode(data1);
String signature = request.getParameter("Signature");
return UnSigData(data, pkFile, signature);
}public static boolean UnSigData(String data, String pubkey, String signature)
{
boolean verifies = false;
try
{
char encodedSigData[] = signature.toCharArray();
byte sigToVerify[] = Base64.decode(encodedSigData);
FileInputStream pkfile = new FileInputStream(pubkey);
byte encKey[] = new byte[pkfile.available()];
pkfile.read(encKey);
pkfile.close();
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
java.security.PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);
Signature sig = Signature.getInstance("MD5withRSA");
sig.initVerify(pubKey);
byte buffer[] = data.getBytes();
sig.update(buffer);
verifies = sig.verify(sigToVerify);
}
catch(Exception e)
{
System.out.println(e.toString());
}
return verifies;
}
import java.io.PrintStream;
import java.security.KeyFactory;
import java.security.Signature;
import java.security.spec.X509EncodedKeySpec;
import javax.servlet.http.HttpServletRequest;string pkFile = "属于一个文件publickeys";
public static boolean validateResponse(HttpServletRequest request, String pkFile)
{
String queryString = request.getQueryString();
int i = queryString.indexOf("&Signature");
String data1 = queryString.substring(0, i);
String data = URLUTF8Encoder.decode(data1);
String signature = request.getParameter("Signature");
return UnSigData(data, pkFile, signature);
}public static boolean UnSigData(String data, String pubkey, String signature)
{
boolean verifies = false;
try
{
char encodedSigData[] = signature.toCharArray();
byte sigToVerify[] = Base64.decode(encodedSigData);
FileInputStream pkfile = new FileInputStream(pubkey);
byte encKey[] = new byte[pkfile.available()];
pkfile.read(encKey);
pkfile.close();
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
java.security.PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);
Signature sig = Signature.getInstance("MD5withRSA");
sig.initVerify(pubKey);
byte buffer[] = data.getBytes();
sig.update(buffer);
verifies = sig.verify(sigToVerify);
}
catch(Exception e)
{
System.out.println(e.toString());
}
return verifies;
}
解决方案 »
- 如果Form提交的本页,页面就无法跳转了吗?
- 讨论asp.net 用ajax怎么做比较安全
- web.config配置问题~着急~~
- 关于服务器配置SQL server 的问题
- Timeout expired 出错求救!!!
- 为什么我用AjaxPro.2.dll的GetServerTime()方法有时不能获得时间?
- 一个取控件值的简单问题
- 用jmail不能发送邮件,怎么办?我都弄了一晚上了
- 怎么取网页的名字带有参数的,在服务器端 如xxx.aspx?type=xxx
- 两小小问题,请大家帮忙?
- asp.net中如何实现打印Response.Write()输出的内容?WEB打印真是头痛啊!在线急等!
- 为什在ie中和火狐中的效果就是不一样
我主要是对java这个东东不太了解
你帮忙给转化一下?
\主要是第二个函数:UnSigData的加密码那块不知对应NET的那个.
java的包和.net的命名空间几乎都不一样,想改太烦...做这样的修改,那就是看懂那段java代码实现了什么功能,然后再用.net来实现
{
boolean verifies = false;
try
{
// .net中string 可以当成char[] 处理,所以着句可以不用
char encodedSigData[] = signature.toCharArray();
// 这句是编码 就是说encodedSigData[] 转换为base64编码的字节数组。 可以查一下msdn
byte sigToVerify[] = Base64.decode(encodedSigData);
// 流,没什么好说的
FileInputStream pkfile = new FileInputStream(pubkey);
byte encKey[] = new byte[pkfile.available()];
pkfile.read(encKey);
pkfile.close();
// 流到这里结束
// System.Security 可以在这个空间下找到类似的RSA加密类 java的加密细节 你可以不关的,直接转成.net的
// msdn里有详细的例子 找一下,依葫芦画瓢
X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
java.security.PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);
Signature sig = Signature.getInstance("MD5withRSA");
sig.initVerify(pubKey);
byte buffer[] = data.getBytes();
sig.update(buffer);
verifies = sig.verify(sigToVerify);
}
catch(Exception e)
{
System.out.println(e.toString());
}
return verifies;
}
bb.Modulus =
bb.Exponent =
这两个值赋值.肯请各位帮忙写一下