标题 | vbs 加解密 for 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 |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。