Как я могу получить одинаковые MD5 га sh как из AS3, так и из VB. NET? Код уже есть, он не работает - PullRequest
0 голосов
/ 12 июля 2020

Мне нужно сгенерировать ha sh файла в VB. NET на сервере и отправить его клиенту AS3 для проверки по файлу на клиенте. Я выбрал MD5. Я использую встроенный VB. NET MD5 ha sh и Hurlant MD5 ha sh на AS3. Результаты разные.

Я ищу умеренно надежный метод проверки файлов, такие же. Скорость так же важна, как и точность. Я открыт для других алгоритмов хеширования, которые по крайней мере так же надежны и безопасны, как MD5.

Если есть решение, использующее то, что у меня есть, это было бы здорово. Если есть другой способ, который работает, это тоже нормально.

Мой код VB выглядит так:

    Dim baFileData() As Byte = File.ReadAllBytes(HttpContext.Current.Server.MapPath(strFilePath))
    Dim strFileHash As String = GetHash(baFileData)

    Function GetHash(theInputBytes() As Byte) As String

        Using hasher As MD5 = MD5.Create()    ' create hash object

            ' Convert to byte array and get hash
            Dim dbytes As Byte() =
                 hasher.ComputeHash(theInputBytes)

            ' sb to create string from bytes
            Dim sBuilder As New StringBuilder()

            ' convert byte data to hex string
            For n As Integer = 0 To dbytes.Length - 1
                sBuilder.Append(dbytes(n).ToString("X2"))
            Next n

            Return sBuilder.ToString()
        End Using

    End Function

Мой код AS3 выглядит так:

private function getFileMD5Hash(flLocalFile:File):String
{
    var strmInFile:FileStream = new FileStream();
    strmInFile.open(flLocalFile, FileMode.READ);
    var strFileData:String = strmInFile.readUTFBytes(strmInFile.bytesAvailable);
    strmInFile.close();
    var hash:IHash = Crypto.getHash("md5");
    var baFileData:ByteArray = Hex.toArray(Hex.fromString(strFileData));
    var baHash:ByteArray = hash.hash(baFileData);
    var strFileHash:String = Hex.fromArray(baHash);
    return strFileHash;
}

1 Ответ

1 голос
/ 13 июля 2020

@ Organis в своих комментариях дал мне инструменты для решения проблемы. Моя единственная причина опубликовать это как ответ - показать, как выглядит полученный код.

Если Organis отправит ответ, я дам ему голос.

Код VB остался прежним.

Код AS3 изменен на;

private function getFileMD5Hash(flLocalFile:File):String
{
    var strmInFile:FileStream = new FileStream();
    strmInFile.open(flLocalFile, FileMode.READ);
    var baFileData:ByteArray = new ByteArray;
    strmInFile.readBytes(baFileData);
    strmInFile.close();
    var hash:IHash = Crypto.getHash("md5");
    var baHash:ByteArray = hash.hash(baFileData);
    var strFileHash:String = Hex.fromArray(baHash).toUpperCase();
    return strFileHash;
}
...