<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: кодирование по алгоритму base64]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=2848&amp;type=atom" />
	<updated>2012-03-22T19:19:18Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=2848</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: кодирование по алгоритму base64]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=58272#p58272" />
			<content type="html"><![CDATA[<p>Еще одно HTA приложение осуществляющее кодирование и декодирование текста windows-1251 в base64 и обратно.<br />Всю работу выполняет объект XML и VBScript. Автор - <strong>Xameleon</strong> - обошелся без &quot;ADODB.Stream&quot; и без сложных математических вычислений.<br /><strong>Base64EncoderDecoder.hta</strong> </p><div class="codebox"><pre><code>&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;Base64 Encoder/Decoder&lt;/title&gt;
    &lt;meta http-equiv=content-type content=&quot;text-html; charset=windows-1251&quot;&gt;
    &lt;meta http-equiv=MSThemeCompatible content=yes&gt;
    &lt;hta:application
        icon=keymgr.dll
        scroll=no
    &gt;
    &lt;style type=&quot;text/css&quot;&gt;
        * {font-family:Verdana;font-size:12px;}
        textarea {font: 12px Courier New; width:100%; height:100%;}
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;table width=100% height=100%&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;b&gt;Исходные данные&lt;/b&gt;&lt;br&gt;(в кодировке windows-1251)&lt;/td&gt;
            &lt;td&gt;&lt;button id=&quot;btnEncode&quot;&gt;Кодировать в base64&lt;/button&gt;&lt;/td&gt;
            &lt;td&gt;&lt;b&gt;Закодированные данные&lt;/b&gt;&lt;/td&gt;
            &lt;td&gt;&lt;button id=&quot;btnDecode&quot;&gt;Декодировать из base64&lt;/button&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr height=100%&gt;
            &lt;td colspan=2 width=50%&gt;&lt;textarea id=&quot;txtDecoded&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
            &lt;td colspan=2&gt;&lt;textarea id=&quot;txtEncoded&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/body&gt;
&lt;script type=&quot;text/vbscript&quot;&gt;
Option Explicit

Sub btnEncode_onclick()
    if txtDecoded.value &lt;&gt; &quot;&quot; Then txtEncoded.value = strTobase64(txtDecoded.value)
End Sub

Sub btnDecode_onclick()
    if txtEncoded.value &lt;&gt; &quot;&quot; Then txtDecoded.value = base64ToStr(txtEncoded.value)
End Sub

&#039;Кодирование String в base64
Function strTobase64(data)
    With document.createElement(&quot;xml&quot;).createElement(&quot;t&quot;)
        .dataType = &quot;bin.base64&quot;
        .nodeTypedValue = strToBin(data)
        strTobase64 = .text
    End With
End Function

&#039;Декодирование base64 в String
Function base64ToStr(data)
    With document.createElement(&quot;xml&quot;).createElement(&quot;t&quot;)
        .dataType = &quot;bin.base64&quot;
        .text = data
        base64ToStr = binToStr(.nodeTypedValue)
    End With
End Function

&#039;Конвертация String в Byte()
Function strToBin(text)
    With document.createElement(&quot;xml&quot;).createElement(&quot;t&quot;)
        .dataType = &quot;bin.hex&quot;
        .text = strTohex(text)
        strToBin = .nodeTypedValue
    End With
End Function

&#039;Конвертация Byte() в String
Function binToStr(data)
    With document.createElement(&quot;xml&quot;).createElement(&quot;t&quot;)
        .dataType = &quot;bin.hex&quot;
        .nodeTypedValue = data
        binToStr = hexToStr(.text)
    End With
End Function

&#039;Кодирование строки в HEX
Function strTohex(text)
    Dim tmp, i
    For i = 1 To Len(text)
        tmp = tmp &amp; Right(&quot;0&quot; &amp; Hex(Asc(Mid(text, i, 1))), 2)
    Next
    strTohex = tmp
End Function

&#039;Декодирование строки из HEX
Function hexToStr(hexStr)
    Dim tmp, i
    For i = 1 To Len(hexStr) Step 2
        tmp = tmp &amp; Chr(&quot;&amp;H&quot; &amp; Mid(hexStr, i, 2))
    Next
    hexToStr = tmp
End Function
&lt;/script&gt;
&lt;/html&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[mozers]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=4112</uri>
			</author>
			<updated>2012-03-22T19:19:18Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=58272#p58272</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: кодирование по алгоритму base64]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=58270#p58270" />
			<content type="html"><![CDATA[<p>Очень наглядное HTA приложение, позволяющее выбрать кодировку текста, алгоритм кодирования (hex или base64) а также версию Microsoft Core XML Services (MSXML) из числа установленных в системе для кодирования/декодирования текста. Исходный вариант (с использованием VBScript) опубликовал <strong>Xameleon</strong> в <a href="http://forum.script-coding.com/viewtopic.php?id=6957">этой теме</a>.<br /><strong>XMLCodeTester.hta</strong> </p><div class="codebox"><pre><code>&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;XML encode/decode Tester&lt;/title&gt;
    &lt;meta http-equiv=content-type content=&quot;text-html; charset=windows-1251&quot;&gt;
    &lt;meta http-equiv=MSThemeCompatible content=yes&gt;
    &lt;hta:application
        icon=keymgr.dll
        scroll=no
    &gt;
    &lt;style type=&quot;text/css&quot;&gt;
        * {font-family:Verdana;font-size:12px;}
        textarea {font: 12px Courier New; width:100%; height:100%;}
    &lt;/style&gt;
&lt;/head&gt;
&lt;body onload=&quot;MSXML_Init()&quot;&gt;
    &lt;table width=100% height=100%&gt;
        &lt;tr&gt;
            &lt;td colspan=4&gt;
                &amp;nbsp;&lt;b&gt;Кодировка:&lt;/b&gt;
                &lt;select id=&quot;selCharset&quot;&gt;
                    &lt;!--Доступные значения: HKEY_CLASSES_ROOT\MIME\Database\Charset --&gt;
                    &lt;option value=&quot;windows-1251&quot;&gt;windows-1251&lt;/option&gt;
                    &lt;option value=&quot;cp866&quot;&gt;cp866&lt;/option&gt;
                    &lt;option value=&quot;koi8-r&quot;&gt;koi8-r&lt;/option&gt;
                    &lt;option value=&quot;utf-8&quot;&gt;utf-8&lt;/option&gt;
                    &lt;option value=&quot;unicodeFFFE&quot;&gt;utf-16le&lt;/option&gt;
                &lt;/select&gt;
                &amp;nbsp;&lt;b&gt;Кодировщик:&lt;/b&gt;
                &lt;select id=&quot;selEncoder&quot;&gt;
                    &lt;option value=&quot;bin.base64&quot;&gt;bin.base64&lt;/option&gt;
                    &lt;option value=&quot;bin.hex&quot;&gt;bin.hex&lt;/option&gt;
                &lt;/select&gt;
                &amp;nbsp;&lt;b&gt;ActiveX:&lt;/b&gt; MSXML version &lt;select id=&quot;msxml_version&quot;&gt;&lt;/select&gt;
                &lt;hr&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td&gt;&lt;b&gt;Исходные данные&lt;/b&gt;&lt;/td&gt;
            &lt;td&gt;&lt;button id=&quot;btnEncode&quot;&gt;Кодировать&lt;/button&gt;&lt;/td&gt;
            &lt;td&gt;&lt;b&gt;Закодированные данные&lt;/b&gt;&lt;/td&gt;
            &lt;td&gt;&lt;button id=&quot;btnDecode&quot;&gt;Декодировать&lt;/button&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr height=100%&gt;
            &lt;td colspan=2 width=50%&gt;&lt;textarea id=&quot;txtDecoded&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
            &lt;td colspan=2&gt;&lt;textarea id=&quot;txtEncoded&quot;&gt;&lt;/textarea&gt;&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/table&gt;
&lt;/body&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
    btnEncode.onclick = function(){
        if (txtDecoded.value) {
            oXML = new ActiveXObject(&#039;Msxml2.DOMDocument.&#039; + msxml_version.value);
            var bin = StrToBin(txtDecoded.value, selCharset.value);
            txtEncoded.value = Encode(bin, selEncoder.value);
        }
    };

    btnDecode.onclick = function(){
        if (txtEncoded.value) {
            oXML = new ActiveXObject(&#039;Msxml2.DOMDocument.&#039; + msxml_version.value);
            var bin = Decode(txtEncoded.value, selEncoder.value);
            txtDecoded.value = BinToStr(bin, selCharset.value);
        }
    };

    function BinToStr(data, codepage){
        with (new ActiveXObject(&#039;ADODB.Stream&#039;)) {
            Type = 1; //adTypeBinary
            Open();
            Write(data);
            position = 0;
            Type = 2; //adTypeText
            charset = codepage;
            return readText();
        }
    }

    function StrToBin(text, codepage){
        with (new ActiveXObject(&#039;ADODB.Stream&#039;)) {
            Type = 2; //adTypeText
            charset = codepage;
            Open();
            WriteText(text);
            position = 0;
            Type = 1; //adTypeBinary
            return read();
        }
    }

    function Encode(data, encoder){
        with (oXML.createElement(&quot;tmp&quot;)){
            dataType = encoder;
            nodeTypedValue = data;
            return text;
        }
    }

    function Decode(data, encoder){
        with (oXML.createElement(&quot;tmp&quot;)){
            dataType = encoder;
            text = data;
            return nodeTypedValue;
        }
    }

    function MSXML_Init() {
        var vers = [&#039;1.0&#039;, &#039;2.0&#039;, &#039;2.5&#039;, &#039;2.6&#039;, &#039;3.0&#039;, &#039;4.0&#039;, &#039;5.0&#039;, &#039;6.0&#039;];
        for (var i = 0; i &lt; vers.length; i++) {
            try {
                oXML = new ActiveXObject(&#039;Msxml2.DOMDocument.&#039;+vers[i]);
                var option = document.createElement(&quot;option&quot;);
                option.value = vers[i];
                option.text = vers[i];
                msxml_version.add(option);
            } catch (e) {}
        }
    }
&lt;/script&gt;
&lt;/html&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[mozers]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=4112</uri>
			</author>
			<updated>2012-03-22T18:57:56Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=58270#p58270</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: кодирование по алгоритму base64]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=29735#p29735" />
			<content type="html"><![CDATA[<p>Еще один пример кодирования/декодирования встроенными средствами JS<br /></p><div class="codebox"><pre><code>/**
*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/

var Base64 = {

    // private property
    _keyStr : &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=&quot;,

    // public method for encoding
    encode : function (input) {
        var output = &quot;&quot;;
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;

        input = Base64._utf8_encode(input);

        while (i &lt; input.length) {

            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);

            enc1 = chr1 &gt;&gt; 2;
            enc2 = ((chr1 &amp; 3) &lt;&lt; 4) | (chr2 &gt;&gt; 4);
            enc3 = ((chr2 &amp; 15) &lt;&lt; 2) | (chr3 &gt;&gt; 6);
            enc4 = chr3 &amp; 63;

            if (isNaN(chr2)) {
                enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                enc4 = 64;
            }

            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);

        }

        return output;
    },

    // public method for decoding
    decode : function (input) {
        var output = &quot;&quot;;
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;

        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, &quot;&quot;);

        while (i &lt; input.length) {

            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));

            chr1 = (enc1 &lt;&lt; 2) | (enc2 &gt;&gt; 4);
            chr2 = ((enc2 &amp; 15) &lt;&lt; 4) | (enc3 &gt;&gt; 2);
            chr3 = ((enc3 &amp; 3) &lt;&lt; 6) | enc4;

            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                output = output + String.fromCharCode(chr3);
            }

        }

        output = Base64._utf8_decode(output);

        return output;

    },

    // private method for UTF-8 encoding
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,&quot;\n&quot;);
        var utftext = &quot;&quot;;

        for (var n = 0; n &lt; string.length; n++) {

            var c = string.charCodeAt(n);

            if (c &lt; 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c &gt; 127) &amp;&amp; (c &lt; 2048)) {
                utftext += String.fromCharCode((c &gt;&gt; 6) | 192);
                utftext += String.fromCharCode((c &amp; 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c &gt;&gt; 12) | 224);
                utftext += String.fromCharCode(((c &gt;&gt; 6) &amp; 63) | 128);
                utftext += String.fromCharCode((c &amp; 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode : function (utftext) {
        var string = &quot;&quot;;
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i &lt; utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c &lt; 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c &gt; 191) &amp;&amp; (c &lt; 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c &amp; 31) &lt;&lt; 6) | (c2 &amp; 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c &amp; 15) &lt;&lt; 12) | ((c2 &amp; 63) &lt;&lt; 6) | (c3 &amp; 63));
                i += 3;
            }

        }

        return string;
    }

}

// ============================================================
// Пример использования:
WScript.Echo(Base64.encode(&quot;Текст, который мы хотим закодировать&quot;));
WScript.Echo(Base64.decode(&quot;0Jgg0YfRgtC+INC40Lcg0Y3RgtC+0LPQviDQv9C+0LvRg9GH0LjQu9C+0YHRjA==&quot;));</code></pre></div>]]></content>
			<author>
				<name><![CDATA[mozers]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=4112</uri>
			</author>
			<updated>2009-10-25T22:27:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=29735#p29735</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: кодирование по алгоритму base64]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20604#p20604" />
			<content type="html"><![CDATA[<p>Бесплатный COM-сервер <a href="http://www.xstandard.com/en/documentation/xbuffer/">Buffer Component</a> предназначен для чтения и записи бинарных файлов, вычисления контрольных сумм MD5 и преобразований Base64. Скачать компонент можно <a href="http://www.xstandard.com/en/downloads/?product=buffer">здесь</a> (ссылка для скачивания высылается на e-mail). Дистрибутив (архив) имеет размер чуть более 35 Кб.</p><p>Пример:<br /></p><div class="codebox"><pre><code>Set oBuffer = CreateObject(&quot;XStandard.Buffer&quot;)
oBuffer.Write &quot;Здравствуй, дедушка Мороз!&quot;
oBuffer.SaveAs &quot;C:\Temp\test.txt&quot;
oBuffer.Reset()

oBuffer.Load &quot;C:\Temp\test.txt&quot;
WScript.Echo oBuffer.Base64String
oBuffer.Reset()

oBuffer.Write &quot;Здравствуй, дедушка Мороз!&quot;
WScript.Echo oBuffer.Base64String</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-03-12T17:08:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20604#p20604</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: кодирование по алгоритму base64]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20541#p20541" />
			<content type="html"><![CDATA[<p>Кодировать строки в Base64 можно и с помощью библиотеки <strong>capicom.dll</strong>. Начиная с Windows XP, эта библиотека должна содержаться в поставке операционной системы.<br /></p><div class="codebox"><pre><code>Set capicom = CreateObject(&quot;CAPICOM.Utilities&quot;)
b64 = capicom.Base64Encode(&quot;Здравствуй, дедушка Мороз!&quot;)
WScript.Echo b64
what = capicom.Base64Decode(b64)
WScript.Echo what</code></pre></div><p>Автор идеи — <strong>ingvar68</strong>.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-03-11T17:31:46Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20541#p20541</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: кодирование по алгоритму base64]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20413#p20413" />
			<content type="html"><![CDATA[<p>Компонент <strong>ChilkatUtil.dll</strong>, который содержит несколько полезных COM-серверов (в т.ч. <strong>CkData</strong>), устанавливается вместе с <a href="http://forum.script-coding.com/viewtopic.php?id=2878">Chilkat Spider</a>. Документацию по объекту <strong>CkData</strong> можно найти <a href="http://www.chilkatsoft.com/refdoc/xCkDataRef.html">здесь</a>.</p><p>Пример ниже копирует существующий файл &quot;C:\Temp\test.jpg&quot;, создавая файл &quot;C:\Temp\test1.jpg&quot;. Исходный файл считывается и преобразуется в строку base64, затем полученная строка base64 обратно загружается в объект и записывается на диск в виде файла.</p><div class="codebox"><pre><code>Set oData = CreateObject(&quot;Chilkat.CkData&quot;)
oData.LoadFile &quot;C:\Temp\test.jpg&quot; &#039; открытие и загрузка двоичного файла
oData.Base64LineLength = 64 &#039; максимальная длина строки при преобразовании в Base64 (по умолчанию - 72)
txt = oData.GetBase64()
oData.LoadBase64 txt
oData.SaveToFile &quot;C:\Temp\test1.jpg&quot; &#039; сохранение данных в двоичный файл</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-03-09T18:01:39Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20413#p20413</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: кодирование по алгоритму base64]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20038#p20038" />
			<content type="html"><![CDATA[<p>Пример ниже копирует существующий файл &quot;C:\Temp\test.jpg&quot;, создавая файл &quot;C:\Temp\test1.jpg&quot;. Исходный файл считывается и преобразуется в строку base64, затем полученная строка base64 преобразуется обратно в массив байтов и записывается на диск в виде файла. На этот раз используется объект <a href="http://forum.script-coding.com/viewtopic.php?id=2852">BinaryOps</a>.<br /></p><div class="codebox"><pre><code>Set bin = CreateObject(&quot;JSBin.BinaryOps&quot;)
L = 0 &#039; чтение с начала файла
e = bin.BinaryRead(&quot;C:\Temp\test.jpg&quot;, 0, L, A) &#039; чтение файла в массив ByteArray
s = bin.BytesToBase64(A) &#039; конвертация в строку Base64

WScript.Echo s

e = bin.Base64ToBytes(s, A1) &#039; конвертация строки Base64 в массив ByteArray
e = bin.BinaryOpen(&quot;C:\Temp\test1.jpg&quot;, L) &#039; открытие (возможно) несуществующего файла на запись
e = bin.BinaryWrite(A1, 0) &#039; запись файла
e = bin.BinaryClose &#039; закрытие файла</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-02-26T16:39:00Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20038#p20038</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: кодирование по алгоритму base64]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20017#p20017" />
			<content type="html"><![CDATA[<p>Бесплатный COM-сервер <a href="http://www.xstandard.com/en/documentation/xbase64/">Base64 Component</a> позволяет закодировать/раскодировать строку или массив байтов по алгоритму base64. Компонент можно скачать <a href="http://www.xstandard.com/en/downloads/?product=base64">здесь</a>, ссылка на скачивание высылается на e-mail. Размер дистрибутива (архив) — порядка 35 Кб.</p><p>Пример работы со строками:<br /></p><div class="codebox"><pre><code>Const otSafeArray = 0
Const otString = 2
Set objBase64 = CreateObject(&quot;XStandard.Base64&quot;)
WScript.Echo objBase64.Encode(&quot;Hello World!&quot;, otString)
WScript.Echo objBase64.Decode(&quot;SGVsbG8gV29ybGQh&quot;, otString)</code></pre></div><p>Копирование бинарного файла через преобразование его в строку base64: пример ниже копирует существующий файл &quot;C:\Temp\test.jpg&quot;, создавая файл &quot;C:\Temp\test2.jpg&quot;. Исходный файл считывается и преобразуется в строку base64, затем полученная строка base64 преобразуется обратно в массив байтов и записывается на диск в виде файла:<br /></p><div class="codebox"><pre><code>Const otSafeArray = 0
Const otString = 2
Set objBase64 = CreateObject(&quot;XStandard.Base64&quot;)

Set objStream = CreateObject(&quot;ADODB.Stream&quot;)
objStream.Type = 1 &#039; TypeBinary
objStream.Open()
objStream.LoadFromFile(&quot;C:\Temp\test.jpg&quot;)
readBytes = objStream.Read()
textBase64 = objBase64.Encode(readBytes, otString)

WScript.Echo textBase64

Set objStream = CreateObject(&quot;ADODB.Stream&quot;)
objStream.Type = 1 &#039; TypeBinary
objStream.Open()
writeBytes = objBase64.Decode(textBase64, otSafeArray)
objStream.Write writeBytes
objStream.SaveToFile &quot;C:\Temp\test2.jpg&quot;, 2</code></pre></div><p>Простой пример записи бинарного файла из строки base64:<br /></p><div class="codebox"><pre><code>Const otSafeArray = 0
Const otString = 2
Set objBase64 = CreateObject(&quot;XStandard.Base64&quot;)
strImage = &quot;R0lGODlhEgASAKIAAMDAwICAgP8AAAAAAP///w&quot; &amp; _
&quot;AAAAAAAAAAACH5BAAAAAAALAAAAAASABIAAAM8&quot; &amp; _
&quot;SLrc/rCJSWdU1b4xAqZKwDWcR2iiSXZMGpUKfJ&quot; &amp; _
&quot;XyRYisTQDcaPOD2AAQwTE4RIdxlVwsHUinD1LT&quot; &amp; _
&quot;WSMJADs=&quot;
Set objStream = CreateObject(&quot;ADODB.Stream&quot;)
objStream.Type = 1 &#039; TypeBinary
objStream.Open()
writeBytes = objBase64.Decode(strImage, otSafeArray)
objStream.Write writeBytes
objStream.SaveToFile &quot;C:\Temp\test.gif&quot;, 2</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-02-26T06:03:41Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20017#p20017</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript: кодирование по алгоритму base64]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=20016#p20016" />
			<content type="html"><![CDATA[<p>Кодирование base64 — это схема, по которой произвольная последовательность байтов преобразуется в последовательность печатаемых ASCII символов. Как правило, используются символы латинского алфавита в верхнем и нижнем регистре (A—Z, a—z), цифры (0—9), символы «+» и «/» и символ «=» в качестве специального суффикса. В некоторых реализациях base64 вместо символов «+», «/» и «=» используются другие символы. Base64 не является шифрованием и используется, в основном, для удобства транспортировки и хранения данных. Результирующие данные имеют длину, большую оригинальной в соотношении 4:3.</p><p>Пример ниже копирует существующий файл &quot;C:\Temp\test.jpg&quot;, создавая файл &quot;C:\Temp\test2.jpg&quot;. Исходный файл считывается и преобразуется в строку base64, затем полученная строка base64 преобразуется обратно в массив байтов и записывается на диск в виде файла. Используются объекты <strong>MSXml2.DOMDocument</strong> и <strong>ADODB.Stream</strong>.<br /></p><div class="codebox"><pre><code>Set objStream = CreateObject(&quot;ADODB.Stream&quot;)
objStream.Type = 1 &#039; TypeBinary
objStream.Open()
objStream.LoadFromFile(&quot;C:\Temp\test.jpg&quot;)
readBytes = objStream.Read()
Set objXML = CreateObject(&quot;MSXml2.DOMDocument&quot;)
objXML.loadXML &quot;&lt;Base64Data /&gt;&quot;
Set objDocElem = objXML.documentElement
objDocElem.dataType = &quot;bin.base64&quot;
objDocElem.nodeTypedValue = readBytes
textBase64 = objDocElem.text

WScript.Echo textBase64

Set objXML = CreateObject(&quot;MSXml2.DOMDocument&quot;)
Set objDocElem = objXML.createElement(&quot;tmp&quot;)
objDocElem.DataType = &quot;bin.base64&quot;
objDocElem.text = textBase64
writeBytes = objDocElem.NodeTypedValue
Set objStream = CreateObject(&quot;ADODB.Stream&quot;)
objStream.Type = 1 &#039; TypeBinary
objStream.Open()
objStream.Write writeBytes
objStream.SaveToFile &quot;C:\Temp\test2.jpg&quot;, 2</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2009-02-26T05:23:57Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=20016#p20016</id>
		</entry>
</feed>
