Java到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");

我这里有一个Java代码段,我想知道是否可以翻译成VB.Net,因为我没有找到VB.Net的代码段-只有以下内容:

    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不应该被解密,所以除了我找到的这个之外没有其他资源-因此需要翻译它。