Я нашел приведенный ниже код для расчета IRMARK для шлюза HMR C, написанный на языке vb. net
Friend Shared Function GetIRMark(ByVal Xml As Byte()) As String
' Convert Byte array to string
Dim text As String = Encoding.UTF8.GetString(Xml)
Dim Doc As New XmlDocument Doc.PreserveWhitespace = True Doc.LoadXml(text)
Dim ns As New XmlNamespaceManager(Doc.NameTable) ns.AddNamespace("env", Doc.DocumentElement.NamespaceURI)
Dim Body = Doc.SelectSingleNode("//env:Body", ns) ns.AddNamespace("tax", Body.FirstChild.NextSibling.NamespaceURI)
Create an XML document of just the body section
Dim xmlBody = New XmlDocument
xmlBody.PreserveWhitespace = True
xmlBody.LoadXml(Body.OuterXml)
' Remove any existing IRMark
Dim nodeIr = xmlBody.SelectSingleNode("//tax:IRmark", ns)
If Not nodeIr Is Nothing Then
nodeIr.ParentNode.RemoveChild(nodeIr)
End If
' Normalise the document using C14N (Canonicalisation)
Dim c14n = New XmlDsigC14NTransform c14n.LoadInput(xmlBody)
Using S As Stream = c14n.GetOutput()
Dim Buffer(S.Length - 1) As Byte
S.Read(Buffer, 0, S.Length)
' Convert to string and normalise line endings
text = Encoding.UTF8.GetString(Buffer)
text = text.Replace("
", "")
text = text.Replace(vbCrLf, vbLf)
text = text.Replace(vbCr, vbLf)
' Convert the final document back into a byte array
Dim b = Encoding.UTF8.GetBytes(text)
' Create the SHA-1 hash from the final document
Dim SHA = SHA1.Create
Dim hash = SHA.ComputeHash(b)
Return Convert.ToBase64String(hash)
End Using
End Function
Возможно ли для кого-то, пожалуйста, помочь мне с am excel VBA версия этого или направьте меня туда, где я могу найти один
Большое спасибо