展会信息港展会大全

VBS 加密解密 For CAPICOM
来源:互联网   发布日期:2016-01-26 10:06:40   浏览:3506次  

导读:这篇文章主要介绍了vbs中通过CAPICOM进行加解密的实现代码,需要的朋友可以参考下复制代码 代码如下: 39;****************************************************************************** 39; 39; THIS ...

这篇文章主要介绍了vbs中通过CAPICOM进行加解密的实现代码,需要的朋友可以参考下

复制代码 代码如下:

'******************************************************************************

'

' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,

' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED

' WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.

'

' Copyright (C) 1999- 2002.Microsoft Corporation.All rights reserved.

'

'******************************************************************************

'

' CEncrypt.vbs

'

' This is a sample script to illustrate how to use the CAPICOM's EncryptedData

' to encrypt/decrypt text file.

'

' Note: For simplicity, this script does not handle exception.

'

'******************************************************************************

Option Explicit

Const ForReading = 1, ForWriting = 2

' Command.

Const Unknown= 0

Const Encrypt= 1

Const Decrypt= 2

' CAPICOM's constants.

Const CAPICOM_ENCRYPTION_ALGORITHM_RC2= 0

Const CAPICOM_ENCRYPTION_ALGORITHM_RC4= 1

Const CAPICOM_ENCRYPTION_ALGORITHM_DES= 2

Const CAPICOM_ENCRYPTION_ALGORITHM_3DES= 3

Const CAPICOM_ENCRYPTION_ALGORITHM_AES= 4

Const CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM= 0

Const CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS= 1

Const CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS= 2

Const CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS = 3

Const CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS = 4

Const CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS = 5

' Command line arguments.

Dim Command: Command= Unknown

Dim Password: Password= Null

Dim Algorithm: Algorithm= CAPICOM_ENCRYPTION_ALGORITHM_RC2

Dim KeyLength: KeyLength= CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM

Dim Verbose: Verbose= False

Dim FileNames()

' First make sure the script is executed by CScript.exe.

If InStr(1, UCase(Wscript.FullName), "CSCRIPT.EXE", vbTextCompare) = 0 Then

Wscript.Echo "This script can only be executed by CScript.exe." & vbCRLF & vbCRLF &_

"You can either:" & vbCRLF & vbCRLF & _

"1. Set CScript.exe as the default (Run CScript //h:cscript), or" & vbCRLF & _

"2. Run CScript.exe directly as in, CScript " & Wscript.ScriptName & "."

Wscript.Quit(-1)

End If

' Parse the command line.

ParseCommandLine

' Now process the command.

Select Case Command

Case Encrypt

DoEncryptCommand FileNames, Algorithm, KeyLength, Password

Case Decrypt

DoDecryptCommand FileNames, Password

End Select

Wscript.Quit(0)

' End Main

'******************************************************************************

'

' Subroutine: DoEncryptCommand

'

' Synopsis: Encrypt content of text file FileNames(0).

'

' Parameter : FileNames - Array of filenames.

'

'Algorithm - Encryption algorithm

'

'KeyLength - Key size.

'

'Password - Secret password.

'

'******************************************************************************

Sub DoEncryptCommand (FileNames, Algorithm, KeyLength, Password)

Dim Content

Dim Message

Dim EncryptedData

' Create the EncryptedData object.

Set EncryptedData = CreateObject("CAPICOM.EncryptedData")

' Set algorithm, key size, and encryption password.

EncryptedData.Algorithm.Name = Algorithm

EncryptedData.Algorithm.KeyLength = KeyLength

EncryptedData.SetSecret Password

' Display main title.

Wscript.Stdout.Writeline "Encrypting text file " & FileNames(0) & "."

Wscript.Stdout.Writeline

' Display more detail for verbose operation.

If Verbose Then

DisplayDetail EncryptedData

End If

' Load content of text file to be encrypted.

LoadFile FileNames(0), Content

' Now encrypt it.

EncryptedData.Content = Content

Message = EncryptedData.Encrypt

' Finally, save encrypted message to FileNames(1).

SaveFile FileNames(1), Message

Wscript.Stdout.Writeline "Successful - Encrypted message saved to " & FileNames(1) & "."

' Free resources.

Set EncryptedData = Nothing

End Sub ' End DoEncryptCommand

'******************************************************************************

'

' Subroutine: DoDecryptCommand

'

' Synopsis: Decrypt an encrypted file.

'

' Parameter : FileNames - Array of filenames.

'

'Password - Secret password.

'

'******************************************************************************

Sub DoDecryptCommand (FileNames, Password)

Dim Message

Dim EncryptedData

' Create the EncryptedData object.

Set EncryptedData = CreateObject("CAPICOM.EncryptedData")

' Set decryption password.

EncryptedData.SetSecret Password

' Display main title.

Wscript.Stdout.Writeline "Decrypting encrypted text file " & FileNames(0) & "."

Wscript.Stdout.Writeline

' Load the encrypted message.

LoadFile FileNames(0), Message

' Now decrypt it.

EncryptedData.Decrypt(Message)

' Display more detail for verbose operation.

If Verbose Then

DisplayDetail EncryptedData

End If

' Finally, save decrypted content to FileNames(1).

SaveFile FileNames(1), EncryptedData.Content

Wscript.Stdout.Writeline "Successful - Decrypted content saved to " & FileNames(1) & "."

' Free resources.

Set EncryptedData = Nothing

End Sub ' End DoDecryptCommand

'******************************************************************************

'

' Subroutine: LoadFile

'

' Synopsis: Read content of a text file.

'

' Parameter : FileName - Input text filename.

'

'Buffer - String buffer to receive the text file content.

'

'******************************************************************************

Sub LoadFile (FileName, Buffer)

Dim fso

Set fso = CreateObject("Scripting.FileSystemObject")

If Not fso.FileExists(FileName) Then

Wscript.Stdout.Writeline "Error: File " & FileName & " not found."

Wscript.Quit(-5)

End If

Dim ts

Set ts = fso.OpenTextFile(FileName, ForReading)

Buffer = ts.ReadAll

End Sub ' End LoadFile

'******************************************************************************

'

' Subroutine: SaveFile

'

' Synopsis: Save string to file.

'

' Parameter : FileName - Output filename.

'

'Buffer - String buffer to be saved.

'

'******************************************************************************

Sub SaveFile (FileName, Buffer)

Dim fso

Set fso = CreateObject("Scripting.FileSystemObject")

Dim ts

Set ts = fso.OpenTextFile(FileName, ForWriting, True)

ts.Write Buffer

End Sub ' End SaveFile

'******************************************************************************

'

' Subroutine: DisplayDetail

'

' Synopsis: Display detail information.

'

' Parameter : EncryptedData - EncryptedData object.

'

'******************************************************************************

Sub DisplayDetail (EncryptedData)

Dim AlgoNames(4)

AlgoNames(0) = "RC2"

AlgoNames(1) = "RC4"

AlgoNames(2) = "DES"

AlgoNames(3) = "3DES"

AlgoNames(4) = "AES"

Wscript.Stdout.Writeline "Algorithm : " & AlgoNames(EncryptedData.Algorithm.Name)

Wscript.Stdout.Write"Key length: "

Select Case EncryptedData.Algorithm.KeyLength

Case CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS

Wscript.Stdout.Writeline "40 bits"

Case CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS

Wscript.Stdout.Writeline "56 bits"

Case CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS

Wscript.Stdout.Writeline "128 bits"

Case CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS

Wscript.Stdout.Writeline "192 bits"

Case CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS

Wscript.Stdout.Writeline "256 bits"

Case Else

Wscript.Stdout.Writeline "Maximum"

End Select

Wscript.Stdout.Writeline

End Sub ' End DisplayDetail

'******************************************************************************

'

' Subroutine: ParseCommandLine

'

' Synopsis: Parse the command line, and set the options accordingly.

'

' Parameter : None

'

'******************************************************************************

Sub ParseCommandLine

' Constants for command line parsing states.

Const ARG_STATE_COMMAND= 0

Const ARG_STATE_OPTIONS= 1

Const ARG_STATE_ALGORITHM= 2

Const ARG_STATE_LENGTH= 3

Const ARG_STATE_FILENAME= 4

Const ARG_STATE_PASSWORD= 5

Const ARG_STATE_END= 6

' Parse command line.

Dim Arg

Dim ArgState : ArgState = ARG_STATE_COMMAND

For Each Arg In Wscript.Arguments

Select Case ArgState

Case ARG_STATE_COMMAND

Select Case UCase(Arg)

Case "ENCRYPT"

Command = Encrypt

Case "DECRYPT"

Command = Decrypt

Case Else

DisplayUsage

End Select

ArgState = ARG_STATE_OPTIONS

Case ARG_STATE_OPTIONS

Select Case UCase(Arg)

Case "-ALG", "/ALG"

ArgState = ARG_STATE_ALGORITHM

Case "-LENGTH", "/LENGTH"

ArgState = ARG_STATE_LENGTH

Case "-V", "/V"

Verbose = True

Case "-?", "/?"

DisplayUsage

Case Else

If Left(Arg, 1) = "-"OR Left(Arg, 1) = "/" Then

DisplayUsage

Else

ReDim FileNames(0)

FileNames(0) = Arg

End If

ArgState = ARG_STATE_FILENAME

End Select

Case ARG_STATE_ALGORITHM

If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then

DisplayUsage

Else

Select Case UCase(Arg)

Case "RC2"

Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_RC2

Case "RC4"

Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_RC4

Case "DES"

Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_DES

Case "3DES"

Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_3DES

Case "AES"

Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_AES

Case Else

DisplayUsage

End Select

End If

ArgState = ARG_STATE_OPTIONS

Case ARG_STATE_LENGTH

If Left(Arg, 1) = "-" OR Left(Arg, 1) = "/" Then

DisplayUsage

Else

Select Case UCase(Arg)

Case "40"

KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_40_BITS

Case "56"

KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_56_BITS

Case "128"

KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_128_BITS

Case "192"

KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_192_BITS

Case "256"

KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_256_BITS

Case "MAX"

KeyLength = CAPICOM_ENCRYPTION_KEY_LENGTH_MAXIMUM

Case Else

DisplayUsage

End Select

End If

ArgState = ARG_STATE_OPTIONS

Case ARG_STATE_FILENAME

If Left(Arg, 1) = "-"OR Left(Arg, 1) = "/" Then

DisplayUsage

Else

ReDim Preserve FileNames(UBound(FileNames) + 1)

FileNames(UBound(FileNames)) = Arg

End If

ArgState = ARG_STATE_PASSWORD

Case ARG_STATE_PASSWORD

If Left(Arg, 1) = "-"OR Left(Arg, 1) = "/" Then

DisplayUsage

Else

Password = Arg

End If

ArgState = ARG_STATE_END

Case Else

Wscript.Stdout.Writeline "Internal script error: Unknown argument state (" & CStr(ArgState) & ") encountered."

Wscript.Quit(-3)

End Select

Next

' Make sure we are in good state.

If ArgState <> ARG_STATE_END Then

DisplayUsage

End If

End Sub ' ParseCommandLine

'******************************************************************************

'

' Subroutine: DisplayUsage

'

' Synopsis: Display the usage screen, and then exit with a negative error

'code.

'

' Parameter : None.

'

'******************************************************************************

Sub DisplayUsage

Select Case Command

Case Unknown

Wscript.Stdout.Writeline "Usage: CEncrypt Command [Options] InFile OutFile Password"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "Command:"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "Encrypt-- Encrypt a text file"

Wscript.Stdout.Writeline "Decrypt-- Decrypt an encrypted text file"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "For help on a specific command, enter ""CEncrypt Command -?"""

Case Encrypt

Wscript.Stdout.Writeline "Usage: CEncrypt Encrypt [Options] ContentFile EncryptedFile Password"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "The Encrypt command is used to encrypt a text file based on a secret password."

Wscript.Stdout.Writeline "Encrypting protects the data from being read by others except those who know"

Wscript.Stdout.Writeline "the secret password."

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "Options:"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "-alg<algorithm>-- RC2, RC4, DES, 3DES, or AES (default to RC2)"

Wscript.Stdout.Writeline "-length <key length>-- 40, 56, 128, 192, 256, or MAX (default to MAX,"

Wscript.Stdout.Writeline "and ignored for DES or 3DES)"

Wscript.Stdout.Writeline "-v-- Verbose operation"

Wscript.Stdout.Writeline "-?-- This help screen"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "ContentFile-- Text file to be encrypted"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "EncryptedFile-- Encrypted text file"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "Note: All non-fatal invalid options for this specific command will be ignored."

Wscript.Stdout.Writeline

Case Decrypt

Wscript.Stdout.Writeline "Usage: CEncrypt Decrypt [Options] EncryptedFile ContentFile Password"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "The Decrypt command is used to decrypt an encrypted text file."

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "Options:"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "-v-- Verbose operation"

Wscript.Stdout.Writeline "-?-- This help screen"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "EncryptedFile-- Encrypted text file"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "ContentFile-- Decrypted text file"

Wscript.Stdout.Writeline

Wscript.Stdout.Writeline "Note: All non-fatal invalid options for this specific command will be ignored."

Wscript.Stdout.Writeline

Case Else

Wscript.Stdout.Writeline "Internal script error: Unknown help state (Command = " & CStr(Command) & ")."

Wscript.Quit(-2)

End Select

Wscript.Quit(-1)

End Sub ' End DisplayUsage

赞助本站

人工智能实验室

相关热词: CAPICOM VBS 加密解密

上一篇:没有了...
相关内容
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港