Java到VB.Net转换此函数
我这里有一个Java代码段,我想知道是否可以翻译成VB.Net,因为我没有找到VB.Net的代码段-只有以下内容:Java到VB.Net转换此函数,java,vb.net,code-snippets,sha1,encryption,Java,Vb.net,Code Snippets,Sha1,Encryption,我这里有一个Java代码段,我想知道是否可以翻译成VB.Net,因为我没有找到VB.Net的代码段-只有以下内容: private static byte[] SHA1(final String in) throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest md = MessageDigest.getInstance("SHA-1");
private static byte[] SHA1(final String in)
throws NoSuchAlgorithmException, UnsupportedEncodingException {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(in.getBytes("iso-8859-1"), 0, in.length());
return md.digest();
}
public static String decryptSHA1(String key, final String start) {
final String delim = "a";
if (start == null)
return null;
byte[] hashedkey;
byte[] password;
int i;
try {
hashedkey = SHA1(key);
} catch (final NoSuchAlgorithmException e) {
e.printStackTrace();
return start;
} catch (final UnsupportedEncodingException e) {
e.printStackTrace();
return start;
}
final String[] temp = start.split(delim);
password = new byte[temp.length];
for (i = 0; i < hashedkey.length; i++) {
final int temp2 = Integer.parseInt(temp[i]);
if (hashedkey[i] == temp2) {
break;
} else {
password[i] = (byte) (temp2 - hashedkey[i]);
}
}
return new String(password, 0, i);
}
谢谢你的建议。这里最难的部分似乎是重做SHA1方法。您只需要找到等效的.NET库类/方法。从名称判断,您可能想要类和类。一开始,算法可能会以这样的方式结束
Private Shared Function SHA1(input As String) As Byte()
Dim iso8859 = System.Text.Encoding.GetEncoding("iso-8859-1")
Dim inBytes = ios8859.GetBytes(input)
' This is one implementation of the abstract class SHA1.'
Dim sha As New SHA1CryptoServiceProvider()
Return sha.ComputeHash(data)
End Function
从那里,您应该能够自己转换decryptSHA1函数的其余部分,因为这只是基本的字节操作。我要注意的是,GetEncoding函数说,如果您传递了无效的代码页名称,它会抛出ArgumentException,而NoSuchAlgorithmException似乎没有任何等效的异常需要担心捕获。可以将任何内容转换为VB.Net。但是C会更容易-有什么原因你不能使用它吗?C转换就足够了,只是Java我没有任何经验。而不是从一种语言到另一种语言的一行或两行函数的逐行端口。。。如何理解函数正在做什么,并直接用所需的语言实现它?它可能有内置的功能,可以使用。我已经研究过了,SHA1不应该被解密,所以除了我找到的这个之外没有其他资源-因此需要翻译它。