Vbscript 为什么此签名脚本比未签名脚本执行时间长?

Vbscript 为什么此签名脚本比未签名脚本执行时间长?,vbscript,code-signing-certificate,wsh,Vbscript,Code Signing Certificate,Wsh,我有一个签名的VBScript。我试图通过命令提示符使用cscript.exe执行它。未签名的脚本执行速度更快(1秒),但如果已签名,则执行时间更长(16秒) c:\cscript my.vbs My.vbs文件包含以下内容: Wscript.echo "My very first script." '' SIG '' Begin signature block '' SIG '' BAcTCEVybGFuZ2VuMSAwHgYDVQQKFBdTaWVtZW5zIEhl '' SIG ''

我有一个签名的VBScript。我试图通过命令提示符使用
cscript.exe
执行它。未签名的脚本执行速度更快(1秒),但如果已签名,则执行时间更长(16秒)

c:\cscript my.vbs
My.vbs文件包含以下内容:

Wscript.echo "My very first script."

'' SIG '' Begin signature block
'' SIG '' BAcTCEVybGFuZ2VuMSAwHgYDVQQKFBdTaWVtZW5zIEhl
'' SIG '' YWx0aGNhcmUgR21iSDEgMB4GA1UEAxQXU2llbWVucyBI
'' SIG '' ZWFsdGhjYXJlIEdtYkgwggEiMA0GCSqGSIb3DQEBAQUA
'' SIG '' A4IBDwAwggEKAoIBAQC1y/VtChCaIT1wrPyyd6dyIiBv
'' SIG '' hwlw6P2ojQgyFutYPqGiPStdiA3O2cvrQJaaqu/lXc+v
'' SIG '' c3tOdSbg2YcqZg5Svpbhr7vxIiN7wd4DGKy8mFdpp23E
'' SIG '' UTnn9bcDqmEqNtLOfu3hFcyW760NDeXWPgwBvXqaUWUL
'' SIG '' kEr96LHmz0Zfohs0ER1WPgYkncIx14nd442KULJb8EyM
'' SIG '' nPvGbv9r4RROSqfGyNwV6EHnQ5TLHieE8n2o7lIEtMSP
'' SIG '' Ne1Psr7V2QEc9wZe2EEsTaKAwdTP3bhexoMK0dGTXcLf
'' SIG '' qI0IT3yqCou9X9zuYfpTmB0u0Mpi8Xma6OmO+L5UmXCo
'' SIG '' bBeXYJFvAgMBAAGjggFdMIIBWTAJBgNVHRMEAjAAMA4G
'' SIG '' A1UdDwEB/wQEAwIHgDArBgNVHR8EJDAiMCCgHqAchhpo
'' SIG '' dHRwOi8vc3Yuc3ltY2IuY29tL3N2LmNybDBhBgNVHSAE
'' SIG '' WjBYMFYGBmeBDAEEATBMMCMGCCsGAQUFBwIBFhdodHRw
.
.
.
.
etc
'' SIG '' End signature block

我只在同一个网络中的机器上遇到这个问题。

虽然对脚本进行签名的一个有用功能确实会带来开销,但这其实很简单

  • 它增加了脚本文件的大小,因为必须存储加密的签名散列,而这对于小脚本来说不应该是一个问题,它将对较大的脚本产生重大影响(因为散列是从内容创建的)

  • 当Windows脚本主机5.6或更高版本支持加密签名哈希时,为验证加密签名哈希而采取的额外步骤*

  • 从脚本文本中提取证书和签名哈希
  • 验证证书是否由受信任的根用户签名,因此是受信任的证书
  • 使用证书中的公钥解密已签名哈希
  • 将解密的哈希值与接收到的脚本文本的哈希值进行比较
  • *采取的步骤

    按OP
    我只能在少数机器上复制这个问题


    这里的可能性是,由于系统限制(如验证签名哈希时的处理能力、内存或操作系统负载),这些“少数机器”需要更长的时间来验证哈希。

    虽然为脚本签名的有用功能确实会带来开销,但这确实非常简单

  • 它增加了脚本文件的大小,因为必须存储加密的签名散列,而这对于小脚本来说不应该是一个问题,它将对较大的脚本产生重大影响(因为散列是从内容创建的)

  • 当Windows脚本主机5.6或更高版本支持加密签名哈希时,为验证加密签名哈希而采取的额外步骤*

  • 从脚本文本中提取证书和签名哈希
  • 验证证书是否由受信任的根用户签名,因此是受信任的证书
  • 使用证书中的公钥解密已签名哈希
  • 将解密的哈希值与接收到的脚本文本的哈希值进行比较
  • *采取的步骤

    按OP
    我只能在少数机器上复制这个问题


    这里的可能性是,由于系统限制(如验证签名哈希时的处理能力、内存或操作系统负载),这些“少数机器”需要更长的时间来验证哈希。

    必须打开额外大小的文件
    cscript.exe
    ,才能执行运行时?老实说,这不是真正的火箭科学,更大的文件需要更长的时间才能打开。说了15秒的差距似乎太大了。@Lankymart谢谢你的回复。它的文件不大。它只有一条语句,但已签名。我知道签名导致了这个问题。我不知道为什么会这样。我只能在少数几台计算机上重现此问题。事实上,文件已签名意味着它包含的内容比第一个未签名的文件更多,因此文件大小会增加。在运行时可以执行之前,必须打开文件的额外大小
    cscript.exe
    ?老实说,这不是真正的火箭科学,更大的文件需要更长的时间才能打开。说了15秒的差距似乎太大了。@Lankymart谢谢你的回复。它的文件不大。它只有一条语句,但已签名。我知道签名导致了这个问题。我不知道为什么会这样。我只能在少数几台机器上重现这个问题。事实上,文件是有签名的,这意味着它比第一个未签名的文件包含更多的内容,因此文件大小会增加。