求大神帮忙把这段C#的代码转成java登陆界面代码的

/// &summary&
/// TestEncrypt 的摘要说明。
/// &/summary&
public class TestEncrypt
public TestEncrypt()
// TODO: 在此处添加构造函数逻辑
/// &summary&
/// 根据传入参数生成加密后的验证码
/// &/summary&
/// &param name="Params"&传入参数(如:request.Account +request.TimeStamp)&/param&
/// &returns&&/returns&
public string GenerateAuthenticators(string Params)
string Result="";
byte[] Key=HexStringToByteArray("FCBED06DBDCA6ACDCF47E08F6A2D");
byte[] IV=new byte[]{1,2,3,4,5,6,7,8};
//Encrypt(Key,IV,System.Convert.puteHashString(Params)),out Encrypted);
Encrypt(Key,IV,((System.Security.Cryptography.HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("SHA1")).ComputeHash(System.Text.Encoding.GetEncoding("utf-8").GetBytes(Params)),out Encrypted);
Result=System.Convert.ToBase64String(Encrypted);
/// &summary&
/// 验证认证码是否正确&&&&&
/// &/summary&
/// &param name="Auth"&用户传入的认证码&/param&
///&param name="Params"&组合后的参数字符串(各参数有序组合)&/param&
/// &returns&&/returns&
public bool CheckAuthenticator(string Auth,string Params)
string NewAuth = GenerateAuthenticators(Params);
return Auth==NewAuth?true:
/// &summary&
/// 使用指定的密钥和向量对一个byte数组进行TripleDES加密
/// &/summary&
/// &param name="KEY"&TripleDES密钥&/param&
/// &param name="IV"&TripleDES向量&/param&
/// &param name="TobeEncrypted"&准备进行TripleDES加密的byte数组&/param&
/// &param name="Encrypted"&加密后得到的byte数组&/param&
/// &returns&如果加密成功就返回真,否则返回假。&/returns&
public bool Encrypt(byte[] KEY ,byte[] IV ,byte[] TobeEncrypted, out& byte[] Encrypted )
if(KEY==null || IV==null)
throw new Exception("KEY不能为空!");
Encrypted=
byte[] tmpiv={0,1,2,3,4,5,6,7};
for(int ii=0;ii&8;ii++)
tmpiv[ii]=IV[ii];
byte[] tmpkey={0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7,0,1,2,3,4,5,6,7};
for(int ii=0;ii&KEY.Lii++)
tmpkey[ii]=KEY[ii];
System.Security.Cryptography.TripleDESCryptoServiceProvider des = new System.Security.Cryptography.TripleDESCryptoServiceProvider();
//tridesencrypt.Dispose();
System.Security.Cryptography.ICryptoTransform tridesencrypt = des.CreateEncryptor(tmpkey,tmpiv);
//tridesencrypt = des.CreateEncryptor(KEY,tmpiv);
Encrypted = tridesencrypt.TransformFinalBlock( TobeEncrypted,0,TobeEncrypted.Length);
//tridesencrypt.Dispose();
des.Clear();
catch(Exception e)
throw new Exception("发生了严重错误:"+e.Message.Trim());
throw new Exception("发生了其他错误!");
/// &summary&
/// 将byte数组的16进制字符串表示形式转化为实际的byte数组。如"FF0D10"转化后即为byte[]{255, 13, 16}
/// &/summary&
/// &param name="s"&byte数组的16进制字符串表示形式&/param&
/// &returns&实际的byte数组&/returns&
private byte[] HexStringToByteArray(string s)
Byte[] buf=new byte[s.Length/2];
for(int i=0;i&buf.Li++)
buf[i]=(byte)(chr2hex(s.Substring(i*2,1))*0x10+chr2hex(s.Substring(i*2+1,1)));
private byte chr2hex(string chr)
switch(chr)
return 0x00;
return 0x01;
return 0x02;
return 0x03;
return 0x04;
return 0x05;
return 0x06;
return 0x07;
return 0x08;
return 0x09;
return 0x0a;
return 0x0b;
return 0x0c;
return 0x0d;
return 0x0e;
return 0x0f;
return 0x00;
}
&&&&&&& static void Main(string[] args)
&&&&&&& {
&&&&&&&&&&& TestEncrypt te=new TestEncrypt();
&&&&&&&&&&& string str=te.GenerateAuthenticators("123456");
&&&&&&&&&&& Console.WriteLine(str);
&&&&&&& }
}
package com.atest.
//using S
public class TestEncrypt {
// / &summary&
// / TestEncrypt 的摘要说明。
// / &/summary&
public TestEncrypt() {
// TODO: 在此处添加构造函数逻辑
// / &summary&
// / 根据传入参数生成加密后的验证码
// / &/summary&
// / &param name="Params"&传入参数(如:request.Account +request.TimeStamp)&/param&
// / &returns&&/returns&
public& String GenerateAuthenticators(String Params)
String Result="";
byte[] Key=HexStringToByteArray("FCBED06DBDCA6ACDCF47E08F6A2D");
byte[] IV=new byte[]{1,2,3,4,5,6,7,8};
// Encrypt(Key,IV,System.Convert.puteHashString(Params)),out
// Encrypted);
Encrypt(Key,IV,((System.Security.Cryptography.HashAlgorithm)System.Security.Cryptography.CryptoConfig.CreateFromName("SHA1")).ComputeHash(Params.getBytes("utf-8")),Encrypted);//System.Text.Encoding.GetEncoding("utf-8").GetBytes(Params)),out Encrypted);
Result=System.Convert.ToBase64String(Encrypted);
// / &summary&
// / 验证认证码是否正确
// / &/summary&
// / &param name="Auth"&用户传入的认证码&/param&
// /&param name="Params"&组合后的参数字符串(各参数有序组合)&/param&
// / &returns&&/returns&
public boolean CheckAuthenticator(String Auth, String Params) {
String NewAuth = GenerateAuthenticators(Params);
return Auth == NewAuth ? true :
// / &summary&
// / 使用指定的密钥和向量对一个byte数组进行TripleDES加密
// / &/summary&
// / &param name="KEY"&TripleDES密钥&/param&
// / &param name="IV"&TripleDES向量&/param&
// / &param name="TobeEncrypted"&准备进行TripleDES加密的byte数组&/param&
// / &param name="Encrypted"&加密后得到的byte数组&/param&
// / &returns&如果加密成功就返回真,否则返回假。&/returns&
public boolean Encrypt(byte[] KEY, byte[] IV, byte[] TobeEncrypted,
byte[] Encrypted) {
if (KEY == null || IV == null)
throw new Exception("KEY不能为空!");
Encrypted =
byte[] tmpiv = { 0, 1, 2, 3, 4, 5, 6, 7 };
for (int ii = 0; ii & 8; ii++) {
tmpiv[ii] = IV[ii];
byte[] tmpkey = { 0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7 };
for (int ii = 0; ii & KEY. ii++) {
tmpkey[ii] = KEY[ii];
System.Security.Cryptography.TripleDESCryptoServiceProvider des = new System.Security.Cryptography.TripleDESCryptoServiceProvider();
// tridesencrypt.Dispose();
//System.Security.Cryptography.ICryptoTransform
ICryptoTransform tridesencrypt = des
.CreateEncryptor(tmpkey, tmpiv);
//tridesencrypt = des.CreateEncryptor(KEY,tmpiv);
Encrypted = tridesencrypt.TransformFinalBlock(TobeEncrypted, 0,
TobeEncrypted.length);
// tridesencrypt.Dispose();
des.Clear();
} catch (Exception e) {
throw new Exception("发生了严重错误:" + e.getMessage().trim());
* catch { throw new Exception("发生了其他错误!"); }
// / &summary&
// / 将byte数组的16进制字符串表示形式转化为实际的byte数组。如"FF0D10"转化后即为byte[]{255, 13, 16}
// / &/summary&
// / &param name="s"&byte数组的16进制字符串表示形式&/param&
// / &returns&实际的byte数组&/returns&
private byte[] HexStringToByteArray(String s) {
byte[] buf = new byte[s.length() / 2];
for (int i = 0; i & buf. i++) {
buf[i] = (byte) (chr2hex(s.substring(i * 2, 1)) * 0x10 + chr2hex(s
.substring(i * 2 + 1, 1)));
private byte chr2hex(String c){
if (c.length() & 1){
throw new Exception("not a char");
catch(Exception ex){}
char chr = c.charAt(0);
switch (chr) {
return 0x00;
return 0x01;
return 0x02;
return 0x03;
return 0x04;
return 0x05;
return 0x06;
return 0x07;
return 0x08;
return 0x09;
return 0x0a;
return 0x0b;
return 0x0c;
return 0x0d;
return 0x0e;
return 0x0f;
return 0x00;
public static void main(String[] args) {
TestEncrypt te = new TestEncrypt();
String str = te.GenerateAuthenticators("123456");
// Console.WriteLine(str);
System.out.println(str);
private static byte[] HexStringToByteArray(String s)
& {
& byte[] buf=new byte[s.length()/2];
& for(int i=0;i&buf.i++)
& {
& buf[i]=(byte)(chr2hex(s.charAt(i*2))*0x10+chr2hex(s.charAt(i*2+1)));
& }
&
& }
& private& static byte chr2hex(char chr)
& {
& switch(chr)
& {
& case '0':
& return 0x00;
& case '1':
& return 0x01;
& case '2':
& return 0x02;
& case '3':
& return 0x03;
& case '4':
& return 0x04;
& case '5':
& return 0x05;
& case '6':
& return 0x06;
& case '7':
& return 0x07;
& case '8':
& return 0x08;
& case '9':
& return 0x09;
& case 'A':
& return 0x0a;
& case 'B':
& return 0x0b;
& case 'C':
& return 0x0c;
& case 'D':
& return 0x0d;
& case 'E':
& return 0x0e;
& case 'F':
& return 0x0f;
& }
& return 0x00;
& }
看到你的C#和java代码也差不多,大体看一下java的语法就转化过来了。
已解决问题
未解决问题求大神将这部分C#代码转成java的_百度知道
提问者采纳
如果你需要加密我这里有一个不知道何时不:package&com.palic.pss.mon.import&javax.crypto.Cimport&javax.crypto.spec.SecretKeySimport&.thoughtworks.xstream.core.util.Base64E/**&*&AES加密解密&*&@author&*&*/public&class&AesUtils&{
public&static&final&String&cKey=&&assistant7654321&;
&&/**& &&&&&*&加密--把加密后的byte数组先进行二进制转16进制在进行base64编码& &&&&&*&@param&sSrc& &&&&&*&@param&sKey& &&&&&*&@return& &&&&&*&@throws&Exception& &&&&&*/&& &&&&public&static&String&encrypt(String&sSrc,&String&sKey)&throws&Exception&{&& &&&&&&&&if&(sKey&==&null)&{&& &&&&&&&&&&&&throw&new&IllegalArgumentException(&Argument&sKey&is&null.&);&& &&&&&&&&}&& &&&&&&&&if&(sKey.length()&!=&16)&{&& &&&&&&&&&&&&throw&new&IllegalArgumentException(&& &&&&&&&&&&&&&&&&&&&&&Argument&sKey'length&is&not&16.&);&& &&&&&&&&}&& &&&&&&&&byte[]&raw&=&sKey.getBytes(&ASCII&);&& &&&&&&&&SecretKeySpec&skeySpec&=&new&SecretKeySpec(raw,&&AES&);&& && &&&&&&&&Cipher&cipher&=&Cipher.getInstance(&AES&);&& &&&&&&&&cipher.init(Cipher.ENCRYPT_MODE,&skeySpec);&& && &&&&&&&&byte[]&encrypted&=&cipher.doFinal(sSrc.getBytes(&UTF-8&));&& &&&&&&&&String&tempStr&=&parseByte2HexStr(encrypted);&& && &&&&&&&&Base64Encoder&encoder&=&new&Base64Encoder();&& &&&&&&&&return&encoder.encode(tempStr.getBytes(&UTF-8&));&& &&&&}&& && &&&&/**& &&&&&*解密--先&进行base64解码,在进行16进制转为2进制然后再解码& &&&&&*&@param&sSrc& &&&&&*&@param&sKey& &&&&&*&@return& &&&&&*&@throws&Exception& &&&&&*/&& &&&&public&static&String&decrypt(String&sSrc,&String&sKey)&throws&Exception&{&& && &&&&&&&&if&(sKey&==&null)&{&& &&&&&&&&&&&&throw&new&IllegalArgumentException(&499&);&& &&&&&&&&}&& &&&&&&&&if&(sKey.length()&!=&16)&{&& &&&&&&&&&&&&throw&new&IllegalArgumentException(&498&);&& &&&&&&&&}&& && &&&&&&&&byte[]&raw&=&sKey.getBytes(&ASCII&);&& &&&&&&&&SecretKeySpec&skeySpec&=&new&SecretKeySpec(raw,&&AES&);&& && &&&&&&&&Cipher&cipher&=&Cipher.getInstance(&AES&);&& &&&&&&&&cipher.init(Cipher.DECRYPT_MODE,&skeySpec);&& && &&&&&&&&Base64Encoder&encoder&=&new&Base64Encoder();&& &&&&&&&&byte[]&encrypted1&=&encoder.decode(sSrc);&& && &&&&&&&&String&tempStr&=&new&String(encrypted1,&&utf-8&);&& &&&&&&&&encrypted1&=&parseHexStr2Byte(tempStr);&& &&&&&&&&byte[]&original&=&cipher.doFinal(encrypted1);&& &&&&&&&&String&originalString&=&new&String(original,&&utf-8&);&& &&&&&&&&return&originalS&& &&&&}&& && &&&&/**& &&&&&*&将二进制转换成16进制& &&&&&*&& &&&&&*&@param&buf& &&&&&*&@return& &&&&&*/&& &&&&public&static&String&parseByte2HexStr(byte&buf[])&{&& &&&&&&&&StringBuffer&sb&=&new&StringBuffer();&& &&&&&&&&for&(int&i&=&0;&i&&&buf.&i++)&{&& &&&&&&&&&&&&String&hex&=&Integer.toHexString(buf[i]&&&0xFF);&& &&&&&&&&&&&&if&(hex.length()&==&1)&{&& &&&&&&&&&&&&&&&&hex&=&'0'&+&&& &&&&&&&&&&&&}&& &&&&&&&&&&&&sb.append(hex.toUpperCase());&& &&&&&&&&}&& &&&&&&&&return&sb.toString();&& &&&&}&& && &&&&/**& &&&&&*&将16进制转换为二进制& &&&&&*&& &&&&&*&@param&hexStr& &&&&&*&@return& &&&&&*/&& &&&&public&static&byte[]&parseHexStr2Byte(String&hexStr)&{&& &&&&&&&&if&(hexStr.length()&&&1)&& &&&&&&&&&&&&return&&& &&&&&&&&byte[]&result&=&new&byte[hexStr.length()&/&2];&& &&&&&&&&for&(int&i&=&0;&i&&&hexStr.length()&/&2;&i++)&{&& &&&&&&&&&&&&int&high&=&Integer.parseInt(hexStr.substring(i&*&2,&i&*&2&+&1),&16);&& &&&&&&&&&&&&int&low&=&Integer.parseInt(hexStr.substring(i&*&2&+&1,&i&*&2&+&2),&& &&&&&&&&&&&&&&&&&&&&16);&& &&&&&&&&&&&&result[i]&=&(byte)&(high&*&16&+&low);&& &&&&&&&&}&& &&&&&&&&return&&& &&&&}& &&&&public&static&void&main(String[]&args)&throws&Exception&{
&*&加密用的Key&可以用26个字母和数字组成,最好不要用保留字符,虽然不会错,至于怎么裁决,个人看情况而定
String&cKey&=&&assistant7654321&;
//&需要加密的字串
String&cSrc&=&&123456&;
long&lStart&=&System.currentTimeMillis();
String&enString&=&encrypt(cSrc,&cKey);
System.out.println(&加密后的字串是:&&+&enString);
long&lUseTime&=&System.currentTimeMillis()&-&lS
System.out.println(&加密耗时:&&+&lUseTime&+&&毫秒&);
lStart&=&System.currentTimeMillis();
String&DeString&=&decrypt(enString,&cKey);
System.out.println(&解密后的字串是:&&+&DeString);
lUseTime&=&System.currentTimeMillis()&-&lS
System.out.println(&解密耗时:&&+&lUseTime&+&&毫秒&);
提问者评价
其他类似问题
java的相关知识
按默认排序
其他2条回答
c#是根据java设计的,你这段代码我没看出哪儿不是java的
关键是用java写出来的和c#的结果不一样System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, &md5&)这句javajava里改怎么写
这不能直接转。java 本身有这些加密的
java.security
关键是用java写出来的和c#的结果不一样System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(sKey, &md5&)这句javajava里改怎么写
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求帮忙把易语言代码转换成C#或者帮忙直接给个C#的代码。主要是连接VPN的API,求版主帮忙。问了很多次。求大神。
[问题点数:50分,结帖人binbin846]
求帮忙把易语言代码转换成C#或者帮忙直接给个C#的代码。主要是连接VPN的API,求版主帮忙。问了很多次。求大神。
[问题点数:50分,结帖人binbin846]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2014年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第四
2014年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第四
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。在java中如何更改以下代码实现指定数据的替换求大神帮助_百度知道
在java中如何更改以下代码实现指定数据的替换求大神帮助
for (int j = 1; (temp = br.readLine()) != null && !temp.equals(oldStr); j++) { buf = buf.append(temp); buf = buf.append(System.getProperty(&line.separator&)); } // 内容插入 buf = buf.append(replaceStr); // 保存该行面内容 while ((temp = br.readLine()) != null) { buf = buf.append(System.getProperty(&line.separator&)); buf = buf.append(temp); } br.close(); FileOutputStream fos = new FileOutputStream(file); PrintWriter pw = new PrintWriter(fos); pw.write(buf.toString().toCharArray()); pw.flush(); pw.close();
提问者采纳
段代码能替换第oldStr并且oldStr能作行现知道想修改要修改行某字符串 oldStr并行用StringTokenizer tokenizer = new StringTokenizer(line, oldStr);找匹配oldStr,其进行替换需要替换全部oldStr做 while(temp = br.readLine()) != null ) { //逐行查找替换用StringTokenizer } 更加简单直接读文件放String用replaceAll替换所用replaceFirst能替换第
其他类似问题
java的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求大神们帮忙弄一下代码
[问题点数:80分,无满意结帖,结帖人chakira_goku]
求大神们帮忙弄一下代码
[问题点数:80分,无满意结帖,结帖人chakira_goku]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2013年12月 Java大版内专家分月排行榜第二
2013年8月 Java大版内专家分月排行榜第三
2013年12月 Java大版内专家分月排行榜第二
2013年8月 Java大版内专家分月排行榜第三
2013年10月 总版技术专家分月排行榜第三
2014年3月 Java大版内专家分月排行榜第一2014年1月 Java大版内专家分月排行榜第一2013年12月 Java大版内专家分月排行榜第一2013年11月 Java大版内专家分月排行榜第一2013年10月 Java大版内专家分月排行榜第一
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 java小游戏源代码 的文章

 

随机推荐