2017-10-06 3 views
2

J'essaie d'écrire un morceau de code dans VBScript pour calculer la valeur SHA512 pour un fichier donné. Selon la documentation MSFT la méthode ComputeHash de l'objet SHA512Managed nécessite un tableau en tant qu'entrée. J'ai donc utilisé ADODB pour lire le fichier d'entrée dont la valeur SHA512 doit être calculée (Parce que, AFAIK, il n'y a aucun moyen pour construire un tableau d'octets dans VBScript). Cependant, j'obtiens une erreur d'exécution 5, 'Appel ou argument de procédure invalide' lors de l'appel de la méthode. La barre de variable dans le code ci-dessous est de type Byte() - VBScript dit.Erreur VBScript 5 essayant de calculer sha512 avec 'System.Security.Cryptography.SHA512Managed'

Quelqu'un pourrait-il me dire ce qui ne va pas?

code:

Option Explicit 
' 
' 
' 
Dim scs, ado    
Dim bar, hsh 

Set scs = CreateObject("System.Security.Cryptography.SHA512Managed") 
Set ado = CreateObject("ADODB.Stream") 

ado.type = 1 ' TypeBinary 
ado.open 
ado.LoadFromFile WScript.ScriptFullName 
bar = ado.Read 
ado.Close 

MsgBox TypeName(bar) & "/" & LenB(bar) & "/" & Len(bar),,"Box 1" 
' Displays : "Byte()/876/438" 

On Error Resume Next 
' Attempt 1 
Set hsh = scs.ComputeHash(bar) 
MsgBox Hex(Err.Number) & "/" & Err.Description,,"Set hsh = " 
' Displays : "5/Invalid procedure call or argument" 

' Attempt 2 
hsh = scs.ComputeHash(bar) 
MsgBox Hex(Err.Number) & "/" & Err.Description,,"hsh = "  
' Displays : "5/Invalid procedure call or argument" 

MsgBox TypeName(scs),,"scs" ' Displays : "SHA512Managed" 

Set ado = Nothing 
Set scs = Nothing 

WScript.Quit 
+0

barre fait référence au script que vous exécutez. Avez-vous la même erreur référençant un fichier qui n'est pas utilisé? – Sorceri

Répondre

3

Utilisez

hsh = scs.ComputeHash_2((bar)) 

(pas ensemble, suffixe _2 ne pas choisir l'autre méthode ComputeHash, passage par valeur())

voir here.

+0

Merci beaucoup et Merci beaucoup Ekkehard. Ça fonctionne bien. – LeChatDeNansen

+0

Et merci encore pour le lien. Le code pointé est sobre, clair et efficace. – LeChatDeNansen