Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Base64 en\de_code

Ответить
Настройки темы
VBS/WSH/JS - Base64 en\de_code

Пользователь


Сообщения: 50
Благодарности: 1

Профиль | Отправить PM | Цитировать


vbs
Как реализовать?

Отправлено: 10:03, 11-01-2016

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Примерно так: vbscript Base64 - Поиск в Google.

Отправлено: 10:24, 11-01-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 50
Благодарности: 1

Профиль | Отправить PM | Цитировать


Рабочее решение:
Код: Выделить весь код
Function Base64Decode(ByVal base64String)
  Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
  Dim dataLength, sOut, groupBegin
  base64String = Replace(base64String, vbCrLf, "")
  base64String = Replace(base64String, vbTab, "")
  base64String = Replace(base64String, " ", "")
  dataLength = Len(base64String)
  If dataLength Mod 4 <> 0 Then
    Err.Raise 1, "Base64Decode", "Bad Base64 string."
    Exit Function
  End If

  For groupBegin = 1 To dataLength Step 4
    Dim numDataBytes, CharCounter, thisChar, thisData, nGroup, pOut
    numDataBytes = 3
    nGroup = 0

    For CharCounter = 0 To 3
   
      thisChar = Mid(base64String, groupBegin + CharCounter, 1)

      If thisChar = "=" Then
        numDataBytes = numDataBytes - 1
        thisData = 0
      Else
        thisData = InStr(1, Base64, thisChar, vbBinaryCompare) - 1
      End If
      If thisData = -1 Then
        Err.Raise 2, "Base64Decode", "Bad character In Base64 string."
        Exit Function
      End If

      nGroup = 64 * nGroup + thisData
    Next

    nGroup = Hex(nGroup)

    nGroup = String(6 - Len(nGroup), "0") & nGroup

    pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _
      Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _
      Chr(CByte("&H" & Mid(nGroup, 5, 2)))
    

    sOut = sOut & Left(pOut, numDataBytes)
  Next

  Base64Decode = sOut
End Function
'Переменная, присвоение значения, вывод в сообщение результата'
dim result
result = Base64Decode("MTIzNDU=")
WScript.Echo(result)

Последний раз редактировалось DarckSol, 11-01-2016 в 11:26.


Отправлено: 11:16, 11-01-2016 | #3


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Некоторое время назад писал для расширения кругозора пару функций:
Код: Выделить весь код
Function ReadBytes(file)
  Dim objStream : Set objStream = CreateObject("SAPI.SpFileStream")
  Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
  Dim objBuff, intLength
  
  file = objFSO.GetAbsolutePathName(file)
  intLength = objFSO.GetFile(file).Size
  
  objStream.Open file, 0
  objStream.Read objBuff, intLength
  objStream.Close
  
  ReadBytes = objBuff
End Function

Function EncodeBase64(bytes)
  Dim objXml : Set objXml = CreateObject("Microsoft.XMLDOM")
  Dim objTmp : Set objTmp = objXml.createElement("tmp")
  
  objTmp.DataType = "bin.base64"
  objTmp.NodeTypedValue = bytes
  EncodeBase64 = objTmp.Text
End Function
Пример работы:
Код: Выделить весь код
Dim objBytes

objBytes = ReadBytes("C:\src\myfile.txt")
WScript.Echo EncodeBase64(objBytes)
Декодирование осуществляется аналогично кодированию.
Пример из нынешней практики:
Код: Выделить весь код
Dim strBase64, strRegular
Dim objEncoding : Set objEncoding = CreateObject("System.Text.UnicodeEncoding")
Dim objBytes : objBytes = objEncoding.GetBytes_4("Это тестовая строка")
Dim objXml : Set objXml = CreateObject("Microsoft.XMLDOM")
Dim objTmp : Set objTmp = objXml.createElement("tmp")

' кодирование
objTmp.DataType = "bin.base64"
objTmp.NodeTypedValue = objBytes
strBase64 = objTmp.Text
WScript.Echo strBase64

' декодирование
objTmp.Text = strBase64
strRegular = objTmp.NodeTypedValue
WScript.Echo strRegular
Iska, а Google - это не по-кодокапательски.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:02, 11-01-2016 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


greg zakharov, «как реализовать» — это не вопрос. Я же не просто отсылаю «в Google», а привожу точный запрос и проверяю его результаты.

Отправлено: 21:08, 11-01-2016 | #5


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Iska, предпочитаю Google спецификации, дизассемблирование и эксперименты с кодом, словом, простое кодокопательство.

Отправлено: 21:32, 11-01-2016 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Base64 en\de_code

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
ASUS EN 8600GT - проблема Careless Видеокарты 8 05-12-2010 20:18
Транслит RU to EN 1.0 OSZone Software Новости программного обеспечения 0 18-03-2010 10:30
EN 8800 sergeus79 Видеокарты 11 18-08-2008 16:05
UpdatePack-XPSP2-En pehser Наборы обновлений для Windows XP/2003/Windows 7 1 01-03-2007 17:42
R-STUDIO v.3 EN kovdaev Автоматическая установка приложений 7 05-12-2006 00:46




 
Переход