Преобразование этой функции из Java в VB.Net - PullRequest
0 голосов
/ 26 января 2011

У меня здесь есть фрагмент 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);
    }

Спасибо за любой совет.

1 Ответ

0 голосов
/ 26 января 2011

Самая сложная часть здесь, кажется, переделка метода SHA1.Вам просто нужно найти эквивалентные классы / методы библиотеки .NET.Судя по именам, вам, вероятно, понадобится класс System.Text.Encoding и класс System.Security.Cryptography.SHA1 .Исходя из этого, алгоритм, вероятно, заканчивается примерно так:

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, чтобы беспокоиться о перехвате.

...