<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: encode code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 27 Jul 2008 03:44:42 GMT</pubDate>
    <description>DZone Snippets: encode code</description>
    <item>
      <title>UTF-8 Converter //JavaScript Object</title>
      <link>http://snippets.dzone.com/posts/show/5294</link>
      <description>&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jsfromhell.com/geral/utf-8"&gt;&lt;br /&gt;Converts a sequence of ANSI characters to UTF-8 and vice-versa.&lt;br /&gt;&lt;br /&gt;[UPDATED CODE AND HELP CAN BE FOUND HERE]&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//+ Jonas Raoni Soares Silva&lt;br /&gt;//@ http://jsfromhell.com/geral/utf-8 [v1.0]&lt;br /&gt;&lt;br /&gt;UTF8 = {&lt;br /&gt;	encode: function(s){&lt;br /&gt;		for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i &lt; l;&lt;br /&gt;			s[i] = (c = s[i].charCodeAt(0)) &gt;= 127 ? o(0xc0 | (c &gt;&gt;&gt; 6)) + o(0x80 | (c &amp; 0x3f)) : s[i]&lt;br /&gt;		);&lt;br /&gt;		return s.join("");&lt;br /&gt;	},&lt;br /&gt;	decode: function(s){&lt;br /&gt;		for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i &lt; l;&lt;br /&gt;			((a = s[i][c](0)) &amp; 0x80) &amp;&amp;&lt;br /&gt;			(s[i] = (a &amp; 0xfc) == 0xc0 &amp;&amp; ((b = s[i + 1][c](0)) &amp; 0xc0) == 0x80 ?&lt;br /&gt;			o(((a &amp; 0x03) &lt;&lt; 6) + (b &amp; 0x3f)) : o(128), s[++i] = "")&lt;br /&gt;		);&lt;br /&gt;		return s.join("");&lt;br /&gt;	}&lt;br /&gt;};&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Example&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var s = "a&#225;&#233;&#237;&#243;&#250;e";&lt;br /&gt;document.write(&lt;br /&gt;	('UTF8.encode("' + s + '") = ').bold(), UTF8.encode(s), "&lt;br /&gt;",&lt;br /&gt;	('UTF8.decode(UTF8.encode("' + s + '"))) = ').bold(), UTF8.decode(UTF8.encode(s))&lt;br /&gt;);&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 30 Mar 2008 16:52:18 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5294</guid>
      <author>jonasraoni (Jonas Raoni Soares Silva)</author>
    </item>
    <item>
      <title>Encode simple passwords</title>
      <link>http://snippets.dzone.com/posts/show/5104</link>
      <description>This code was used to demonstrate how to translate easy to remember simple (weak) passwords into more difficult to guess (strong) passwords.  Example: Using Gmail I like an easy to remember password, I submit the password 'jr123' to the password_lookup.html page and what's returned to me is a stronger password 'NCC2SI1T'.&lt;br /&gt;&lt;br /&gt;file: passwd_lookup.rb (generates an xml file containing an alphanumeric index with corresponding cryptic values)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;class PasswordLookup&lt;br /&gt;&lt;br /&gt;  def initialize()&lt;br /&gt;    chars =  (0..9).to_a  + Array.new(7) + ('A'..'Z').to_a + Array.new(6) + ('a'..'z').to_a &lt;br /&gt;    @chars = (0..9).to_a  + ('A'..'Z').to_a + ('a'..'z').to_a &lt;br /&gt;    @doc = Document.new()&lt;br /&gt;    root = Element.new('codes')&lt;br /&gt;    @doc.add_element(root)&lt;br /&gt;&lt;br /&gt;    chars.each do |char|&lt;br /&gt;      node = Element.new('code')&lt;br /&gt;      if not char.nil? &lt;br /&gt;        node.attributes['index'] = char&lt;br /&gt;        node.attributes['value'] = get_random_chars(2)&lt;br /&gt;      end&lt;br /&gt;      root.add_element(node)&lt;br /&gt;    end&lt;br /&gt;    puts root&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  def save(filepath)&lt;br /&gt;    file = File.new(filepath,'w')&lt;br /&gt;    file.puts @doc&lt;br /&gt;    file.close&lt;br /&gt;  end&lt;br /&gt;        &lt;br /&gt;  def get_random_chars(vword_size)&lt;br /&gt;    newpass = Array.new(rand(vword_size) + 1, '').collect{@chars[rand(@chars.size)]}.join&lt;br /&gt;    # return the encryption providing it doesn't already exist in the lookup table.&lt;br /&gt;    if not /value=\'#{newpass}\'/.match @doc.root.elements.to_a.to_s &lt;br /&gt;     return newpass &lt;br /&gt;    else&lt;br /&gt;     return get_random_chars(vword_size) &lt;br /&gt;    end&lt;br /&gt;&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  private :get_random_chars&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;output extract: (codes - see also http://rorbuilder.info/pl/codes)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;codes&gt;&lt;br /&gt;&lt;code value='4h' index='a'/&gt;&lt;code value='B' index='b'/&gt;&lt;code value='m' index='c'/&gt;&lt;br /&gt;&lt;code value='qf' index='d'/&gt;&lt;br /&gt;&lt;/codes&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;file: password_lookup.js&lt;br /&gt;&lt;code&gt;&lt;br /&gt;var t;&lt;br /&gt;var m_doc;&lt;br /&gt;&lt;br /&gt;function loadXml() {&lt;br /&gt;  url = 'http://rorbuilder.info/pl/codes';&lt;br /&gt;  m_doc = XML.load(url);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function getCode(val,i) {&lt;br /&gt;  pos = val.charCodeAt(i) - 48;&lt;br /&gt;  node = m_doc.documentElement.childNodes[pos]&lt;br /&gt;  return node.getAttribute('value');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function timed_update(keyCode,  val) {&lt;br /&gt;  if (val.length &gt; 0 &amp;&amp; ((keyCode &gt; 40) || (keyCode == 8)) ) {&lt;br /&gt;    clearTimeout(t);&lt;br /&gt;    t = setTimeout("revealCode('" + val + "')", 1000);&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {  &lt;br /&gt;    o = document.getElementById('out1');&lt;br /&gt;    if (val.length &lt;= 0 &amp;&amp; o.value.length &gt; 0) {&lt;br /&gt;      o.value = '';&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function revealCode(val) {&lt;br /&gt;  var iEnd = val.length;&lt;br /&gt;  var newcode = '';&lt;br /&gt;  for (i=0;i&lt;iEnd;i++) {&lt;br /&gt;      &lt;br /&gt;    var codex = getCode(val,i);&lt;br /&gt;    newcode += codex;&lt;br /&gt;  }&lt;br /&gt;  update(newcode);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function update(val){&lt;br /&gt;  o = document.getElementById('out1');&lt;br /&gt;  o.value = val;&lt;br /&gt;  /*var o_copied = document.getElementById('out1').createTextRange();&lt;br /&gt;  o_copied.exeCommand("Copy");*/&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;file: password_lookup.html&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  &lt;body onload="loadXml()"&gt;&lt;br /&gt;    &lt;h1&gt;Password lookup&lt;/h1&gt;&lt;br /&gt;    &lt;dl&gt;&lt;br /&gt;    &lt;dt&gt;&lt;label for="in1"&gt;Enter password:&lt;/label&gt;&lt;/dt&gt;    &lt;br /&gt;    &lt;dd&gt;&lt;input type="text" name="in1" id="in1" value="" &lt;br /&gt;  onkeyup="timed_update(event.keyCode, this.value)" /&gt;&lt;/dd&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;dt&gt;&lt;label for="out1"&gt;Generated password&lt;/label&gt;&lt;/dt&gt;&lt;br /&gt;    &lt;dd&gt;&lt;input type="text" name="out1" id="out1" value=""/&gt;&lt;/dd&gt;&lt;br /&gt;    &lt;dd&gt;&lt;input type="button" name="clear1" id="clear1" onclick="clearPassword()" value="clear"/&gt;&lt;/dd&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/dl&gt;&lt;br /&gt;    &lt;p&gt;see also: &lt;a href="codes.xml" title="password code lookup table"&gt;codes.xml&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;  &lt;/body&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Try out the  &lt;a href="http://rorbuilder.info/pl/password_lookup.html"&gt;encode a simple password demo&lt;/a&gt; [rorbuilder.info]. &lt;br /&gt;&lt;br /&gt;see also: &lt;a href="http://snippets.dzone.com/posts/show/5091"&gt;Reading an XML file usng JavaScript&lt;/a&gt; [snippets.dzone.com]</description>
      <pubDate>Mon, 04 Feb 2008 17:30:47 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/5104</guid>
      <author>jrobertson (James Robertson)</author>
    </item>
    <item>
      <title>str_hex and hex_str</title>
      <link>http://snippets.dzone.com/posts/show/2039</link>
      <description>// Convert hex to string and vice versa.&lt;br /&gt;//&lt;br /&gt;// (Source: http://codedump.jonasjohn.de/)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function str_hex($string){&lt;br /&gt;    $hex='';&lt;br /&gt;    for ($i=0; $i &lt; strlen($string); $i++){&lt;br /&gt;        $hex .= dechex(ord($string[$i]));&lt;br /&gt;    }&lt;br /&gt;    return $hex;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function hex_str($hex){&lt;br /&gt;    $string='';&lt;br /&gt;    for ($i=0; $i &lt; strlen($hex)-1; $i+=2){&lt;br /&gt;        $string .= chr(hexdec($hex[$i].$hex[$i+1]));&lt;br /&gt;    }&lt;br /&gt;    return $string;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// example:&lt;br /&gt;&lt;br /&gt;$hex = str_hex("test sentence...");&lt;br /&gt;// $hex contains 746573742073656e74656e63652e2e2e&lt;br /&gt;&lt;br /&gt;print hex_str($hex);&lt;br /&gt;// outputs: test sentence...&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Tue, 16 May 2006 01:41:34 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2039</guid>
      <author>jonasj (Jonas J.)</author>
    </item>
    <item>
      <title>php javascript class encode</title>
      <link>http://snippets.dzone.com/posts/show/1871</link>
      <description>&lt;code&gt;&lt;br /&gt;&lt;?php &lt;br /&gt;/* &lt;br /&gt;  +----------------------------------------------------------------------+ &lt;br /&gt;  | SofeeFramework for PHP 4                                             | &lt;br /&gt;  +----------------------------------------------------------------------+ &lt;br /&gt;  | Copyright (c) 2004-2005 Sofee Development Team.(http://www.sofee.cn) | &lt;br /&gt;  +----------------------------------------------------------------------+ &lt;br /&gt;  | This source file is subject to version 1.00 of the Sofee license,    | &lt;br /&gt;  | that is bundled with this package in the file LICENSE, and is        | &lt;br /&gt;  | available through the world-wide-web at the following url:           | &lt;br /&gt;  | http://www.sofee.cn/license/1_00.txt.                                | &lt;br /&gt;  | If you did not receive a copy of the Sofee license and are unable to | &lt;br /&gt;  | obtain it through the world-wide-web, please send a note to          | &lt;br /&gt;  | license@sofee.cn so we can mail you a copy immediately.              | &lt;br /&gt;  +----------------------------------------------------------------------+ &lt;br /&gt;  | Author: Justin Wu &lt;ezdevelop@gmail.com&gt;                              | &lt;br /&gt;  +----------------------------------------------------------------------+ &lt;br /&gt;*/ &lt;br /&gt;     &lt;br /&gt;/* $Id: SofeeScriptDecoder.php,v 1.1 2005/06/14 06:30:14 wenlong Exp $ */ &lt;br /&gt;&lt;br /&gt;/** &lt;br /&gt;* Sofee Script Decoder class -    Decodes JScript/VBscript data encoded with the &lt;br /&gt;*                                MS ScriptEncoder in true crossbrowser manner. &lt;br /&gt;* &lt;br /&gt;* This script was influenced by the C version (scrdec1x.c) by Mr.Brownstone, &lt;br /&gt;* and is distributed under the terms of the BSD License. &lt;br /&gt;* &lt;br /&gt;* scrdec1x.c is copyright(c) Mr.Brownstone &lt;mrbrownstone@virtualconspiracy.com&gt; &lt;br /&gt;* http://www.virtualconspiracy.com/scrdec.html &lt;br /&gt;* &lt;br /&gt;* @package        SofeeFramework &lt;br /&gt;* @access        public &lt;br /&gt;* @version        $Revision: 1.1 $ &lt;br /&gt;* @author        Justin Wu &lt;wenlong@php.net&gt; &lt;br /&gt;* @homepage        http://www.sofee.cn &lt;br /&gt;* @copyright    Copyright (c) 2004-2005 Sofee Development Team.(http://www.sofee.cn) &lt;br /&gt;* @since        2005-06-14 &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;define('STATE_COPY_INPUT',        100); &lt;br /&gt;define('STATE_READLEN',            101); &lt;br /&gt;define('STATE_DECODE',            102); &lt;br /&gt;define('STATE_UNESCAPE',        103); &lt;br /&gt;&lt;br /&gt;class SofeeScriptDecoder { &lt;br /&gt;    var $rawData = array ( &lt;br /&gt;        0x64,0x37,0x69, 0x50,0x7E,0x2C, 0x22,0x5A,0x65, 0x4A,0x45,0x72, &lt;br /&gt;        0x61,0x3A,0x5B, 0x5E,0x79,0x66, 0x5D,0x59,0x75, 0x5B,0x27,0x4C, &lt;br /&gt;        0x42,0x76,0x45, 0x60,0x63,0x76, 0x23,0x62,0x2A, 0x65,0x4D,0x43, &lt;br /&gt;        0x5F,0x51,0x33, 0x7E,0x53,0x42, 0x4F,0x52,0x20, 0x52,0x20,0x63, &lt;br /&gt;        0x7A,0x26,0x4A, 0x21,0x54,0x5A, 0x46,0x71,0x38, 0x20,0x2B,0x79, &lt;br /&gt;        0x26,0x66,0x32, 0x63,0x2A,0x57, 0x2A,0x58,0x6C, 0x76,0x7F,0x2B, &lt;br /&gt;        0x47,0x7B,0x46, 0x25,0x30,0x52, 0x2C,0x31,0x4F, 0x29,0x6C,0x3D, &lt;br /&gt;        0x69,0x49,0x70, 0x3F,0x3F,0x3F, 0x27,0x78,0x7B, 0x3F,0x3F,0x3F, &lt;br /&gt;        0x67,0x5F,0x51, 0x3F,0x3F,0x3F, 0x62,0x29,0x7A, 0x41,0x24,0x7E, &lt;br /&gt;        0x5A,0x2F,0x3B, 0x66,0x39,0x47, 0x32,0x33,0x41, 0x73,0x6F,0x77, &lt;br /&gt;        0x4D,0x21,0x56, 0x43,0x75,0x5F, 0x71,0x28,0x26, 0x39,0x42,0x78, &lt;br /&gt;        0x7C,0x46,0x6E, 0x53,0x4A,0x64, 0x48,0x5C,0x74, 0x31,0x48,0x67, &lt;br /&gt;        0x72,0x36,0x7D, 0x6E,0x4B,0x68, 0x70,0x7D,0x35, 0x49,0x5D,0x22, &lt;br /&gt;        0x3F,0x6A,0x55, 0x4B,0x50,0x3A, 0x6A,0x69,0x60, 0x2E,0x23,0x6A, &lt;br /&gt;        0x7F,0x09,0x71, 0x28,0x70,0x6F, 0x35,0x65,0x49, 0x7D,0x74,0x5C, &lt;br /&gt;        0x24,0x2C,0x5D, 0x2D,0x77,0x27, 0x54,0x44,0x59, 0x37,0x3F,0x25, &lt;br /&gt;        0x7B,0x6D,0x7C, 0x3D,0x7C,0x23, 0x6C,0x43,0x6D, 0x34,0x38,0x28, &lt;br /&gt;        0x6D,0x5E,0x31, 0x4E,0x5B,0x39, 0x2B,0x6E,0x7F, 0x30,0x57,0x36, &lt;br /&gt;        0x6F,0x4C,0x54, 0x74,0x34,0x34, 0x6B,0x72,0x62, 0x4C,0x25,0x4E, &lt;br /&gt;        0x33,0x56,0x30, 0x56,0x73,0x5E, 0x3A,0x68,0x73, 0x78,0x55,0x09, &lt;br /&gt;        0x57,0x47,0x4B, 0x77,0x32,0x61, 0x3B,0x35,0x24, 0x44,0x2E,0x4D, &lt;br /&gt;        0x2F,0x64,0x6B, 0x59,0x4F,0x44, 0x45,0x3B,0x21, 0x5C,0x2D,0x37, &lt;br /&gt;        0x68,0x41,0x53, 0x36,0x61,0x58, 0x58,0x7A,0x48, 0x79,0x22,0x2E, &lt;br /&gt;        0x09,0x60,0x50, 0x75,0x6B,0x2D, 0x38,0x4E,0x29, 0x55,0x3D,0x3F &lt;br /&gt;    ); &lt;br /&gt;&lt;br /&gt;    var $pick_encoding = array ( &lt;br /&gt;        1, 2, 0, 1, 2, 0, 2, 0, 0, 2, 0, 2, 1, 0, 2, 0, &lt;br /&gt;        1, 0, 2, 0, 1, 1, 2, 0, 0, 2, 1, 0, 2, 0, 0, 2, &lt;br /&gt;        1, 1, 0, 2, 0, 2, 0, 1, 0, 1, 1, 2, 0, 1, 0, 2, &lt;br /&gt;        1, 0, 2, 0, 1, 1, 2, 0, 0, 1, 1, 2, 0, 1, 0, 2 &lt;br /&gt;    ); &lt;br /&gt;&lt;br /&gt;    var $transformed = array(); &lt;br /&gt;&lt;br /&gt;    /** &lt;br /&gt;    * &#35828;&#26126; &lt;br /&gt;    * &lt;br /&gt;    * @access    private &lt;br /&gt;    * @var        string &lt;br /&gt;    */ &lt;br /&gt;    var $digits; &lt;br /&gt;&lt;br /&gt;     &lt;br /&gt;    /** &lt;br /&gt;    * Constructor &lt;br /&gt;    * &lt;br /&gt;    * @access        public &lt;br /&gt;    * @return        void     &lt;br /&gt;    */ &lt;br /&gt;    function SofeeScriptDecoder() { &lt;br /&gt;        $this-&gt;maketrans(); &lt;br /&gt;        $this-&gt;makedigits(); &lt;br /&gt;    } &lt;br /&gt;     &lt;br /&gt;    /** &lt;br /&gt;    * unescape a char &lt;br /&gt;    * &lt;br /&gt;    * @access        public &lt;br /&gt;    * @param        string        [$char] &lt;br /&gt;    * @return        string &lt;br /&gt;    */ &lt;br /&gt;    function unescape($char) { &lt;br /&gt;        $escapes = "#&amp;!*$"; &lt;br /&gt;        $escaped = "\r\n&lt;&gt;@"; &lt;br /&gt;        $i = 0; &lt;br /&gt;&lt;br /&gt;        if (ord($char) &gt; 126) { &lt;br /&gt;            return $char; &lt;br /&gt;        } &lt;br /&gt;         &lt;br /&gt;        while ($escapes[$i]) { &lt;br /&gt;            if ($escapes[$i] == $char) &lt;br /&gt;                return $escaped[$i]; &lt;br /&gt;            $i++; &lt;br /&gt;        } &lt;br /&gt;        return '?'; &lt;br /&gt;    } &lt;br /&gt;     &lt;br /&gt;    /** &lt;br /&gt;    * pre-building the char-matrix &lt;br /&gt;    * &lt;br /&gt;    * @access        public &lt;br /&gt;    * @return        void     &lt;br /&gt;    */ &lt;br /&gt;    function maketrans() { &lt;br /&gt;        for ($i=0; $i&lt;3; $i++) { &lt;br /&gt;            $this-&gt;transformed[$i] = array(); &lt;br /&gt;        } &lt;br /&gt;&lt;br /&gt;        for ($i=31; $i&lt;=126; $i++) { &lt;br /&gt;            for ($j=0; $j&lt;3; $j++) { &lt;br /&gt;                $this-&gt;transformed[$j][$this-&gt;rawData[($i-31)*3 + $j]] = ($i==31) ? 9 : $i; &lt;br /&gt;            } &lt;br /&gt;        } &lt;br /&gt;    } &lt;br /&gt;     &lt;br /&gt;    /** &lt;br /&gt;    * pre-building the char-matrix &lt;br /&gt;    * &lt;br /&gt;    * @access        public &lt;br /&gt;    * @return        void     &lt;br /&gt;    */ &lt;br /&gt;    function makedigits() { &lt;br /&gt;        for ($i=0; $i&lt;26; $i++) { &lt;br /&gt;            $this-&gt;digits[ord('A')+$i] = $i; &lt;br /&gt;            $this-&gt;digits[ord('a')+$i] = $i+26; &lt;br /&gt;        } &lt;br /&gt;        for ($i=0; $i&lt;10; $i++) { &lt;br /&gt;            $this-&gt;digits[ord('0')+$i] = $i+52; &lt;br /&gt;        } &lt;br /&gt;        $this-&gt;digits[0x2b] = 62; &lt;br /&gt;        $this-&gt;digits[0x2f] = 63; &lt;br /&gt;    } &lt;br /&gt;     &lt;br /&gt;    /** &lt;br /&gt;    * decode string length &lt;br /&gt;    * &lt;br /&gt;    * @access        public &lt;br /&gt;    * @param        string        [$str] &lt;br /&gt;    * @return        integer &lt;br /&gt;    */ &lt;br /&gt;    function decodeBase64($str) { &lt;br /&gt;        $val = 0; &lt;br /&gt;        $val += ($this-&gt;digits[ord($str[0])] &lt;&lt; 2); &lt;br /&gt;        $val += ($this-&gt;digits[ord($str[1])] &gt;&gt; 4); &lt;br /&gt;        $val += ($this-&gt;digits[ord($str[1])] &amp; 0xf) &lt;&lt; 12; &lt;br /&gt;        $val += (($this-&gt;digits[ord($str[2])] &gt;&gt; 2) &lt;&lt; 8); &lt;br /&gt;        $val += (($this-&gt;digits[ord($str[2])] &amp; 0x3) &lt;&lt; 22); &lt;br /&gt;        $val += ($this-&gt;digits[ord($str[3])] &lt;&lt; 16); &lt;br /&gt;        return $val; &lt;br /&gt;    } &lt;br /&gt;&lt;br /&gt;    /** &lt;br /&gt;    * Decodes JScript/VBscript data encoded with the MS ScriptEncoder in true crossbrowser manner. &lt;br /&gt;    * &lt;br /&gt;    * @access        public &lt;br /&gt;    * @param        string        [$str] &lt;br /&gt;    * @return        string     &lt;br /&gt;    */ &lt;br /&gt;    function decode($str) { &lt;br /&gt;        $marker = "#@~^"; &lt;br /&gt;        $strIdx = 0; &lt;br /&gt;        $scrIdx = 0; &lt;br /&gt;        $decIdx = 0; &lt;br /&gt;        $char = null; &lt;br /&gt;        $strLen = $scrLen = 0; &lt;br /&gt;        $state = STATE_COPY_INPUT; &lt;br /&gt;        $ret = ""; &lt;br /&gt;&lt;br /&gt;        while ($state) { &lt;br /&gt;            switch ($state) { &lt;br /&gt;                case STATE_COPY_INPUT : &lt;br /&gt;                    $scrIdx = strpos($str, $marker, $strIdx); &lt;br /&gt;                    if ($scrIdx !== false) { &lt;br /&gt;                        $ret .= substr($str, $strIdx, $scrIdx); &lt;br /&gt;                        $scrIdx += strlen($marker); &lt;br /&gt;                        $state = STATE_READLEN; &lt;br /&gt;                    } else { &lt;br /&gt;                        $strIdx = $strIdx==0 ? 0 : $strIdx; &lt;br /&gt;                        $ret .= substr($str, $strIdx, strlen($str)); &lt;br /&gt;                        $state = 0; &lt;br /&gt;                    } &lt;br /&gt;                    break; &lt;br /&gt;                         &lt;br /&gt;                case STATE_READLEN : &lt;br /&gt;                    $strLen = substr($str, $scrIdx, 6); &lt;br /&gt;                    $scrLen = $this-&gt;decodeBase64($strLen); &lt;br /&gt;                    $scrIdx += (6 + strlen("==")); &lt;br /&gt;                    $state = STATE_DECODE; &lt;br /&gt;                    break; &lt;br /&gt;                 &lt;br /&gt;                case STATE_DECODE : &lt;br /&gt;                    if (!$scrLen) { &lt;br /&gt;                        $strIdx = $scrIdx + strlen("DQgAAA==^#~@"); &lt;br /&gt;                        $decIdx = 0; &lt;br /&gt;                        $state = STATE_COPY_INPUT; &lt;br /&gt;                        break; &lt;br /&gt;                    } &lt;br /&gt;                    $char = substr($str, $scrIdx, 1); &lt;br /&gt;                    if ($char == "@") { &lt;br /&gt;                        $state = STATE_UNESCAPE; &lt;br /&gt;                    } else { &lt;br /&gt;                        if (ord($char[0]) &lt; 0x80) { &lt;br /&gt;                            $ret .= chr($this-&gt;transformed[$this-&gt;pick_encoding[$decIdx%64]][ord($char)]); &lt;br /&gt;                            $decIdx++; &lt;br /&gt;                        } else { &lt;br /&gt;                            $ret .= $char; &lt;br /&gt;                            if ( &lt;br /&gt;                                (ord($char) &gt; 0xa0) &amp;&amp; (ord($char) &lt; 0xff)    // 936 - Simplified Chinese GBK    -    0xa1-0xfe &lt;br /&gt;                                || (ord($char) &gt; 0x80) &amp;&amp; (ord($char) &lt; 0xff)    // 950 - Traditional Chinese Big5    -    0x81-0xfe &lt;br /&gt;                            ) { &lt;br /&gt;                                $scrIdx++; &lt;br /&gt;                                $scrLen--; &lt;br /&gt;                                $ret .= substr($str, $scrIdx, 1); &lt;br /&gt;                            } &lt;br /&gt;                        } &lt;br /&gt;                        $scrIdx++; &lt;br /&gt;                        $scrLen--; &lt;br /&gt;                        break; &lt;br /&gt;                    } &lt;br /&gt;                     &lt;br /&gt;                case STATE_UNESCAPE: &lt;br /&gt;                    $ret .= $this-&gt;unescape(substr($str, ++$scrIdx, 1)); &lt;br /&gt;                    $scrIdx++; &lt;br /&gt;                    $scrLen -= 2; &lt;br /&gt;                    $decIdx++; &lt;br /&gt;                    $state = STATE_DECODE; &lt;br /&gt;                    break; &lt;br /&gt;            } &lt;br /&gt;        } &lt;br /&gt;        return ($ret); &lt;br /&gt;    } &lt;br /&gt;} &lt;br /&gt;?&gt; &lt;br /&gt;&lt;br /&gt;&#35843;&#29992;&#26041;&#27861;&#65306;&lt;br /&gt;&lt;?php &lt;br /&gt;require_once('SofeeScriptDecoder.php'); &lt;br /&gt;&lt;br /&gt;$scr = new SofeeScriptDecoder(); &lt;br /&gt;$str = file_get_contents('test.txt'); &lt;br /&gt;&lt;br /&gt;echo $scr-&gt;decode($str); &lt;br /&gt;?&gt; &lt;br /&gt;&lt;br /&gt;test.txt&#25991;&#20214;&#20869;&#23481;&#65306;&lt;br /&gt;#@~^8wIAAA==@!4Yh^@*@#@&amp;@!DkDs+@*nunUlsG RmKh@!JYkDsn@*@#@&amp;@!4GNz@*@#@&amp;@!/1.kaY~smxo;CT+xJNC7ld1DbwYr@*@#@&amp;0!x^YbWU~T+YohV}4L^O`*PP@#@&amp;d-CMPG4N~',x;s^i@#@&amp;7DDzPP@#@&amp;d7K4NP',xAPzmOk7+p6(L+1O`rH/Xhs c(tSuKPKr#I@#@&amp;78,mCO1t`nb, @#@&amp;i7DDz, @#@&amp;didK8L,'~xh~)1Yk7n(}4L^O`rHbm.WdG6Y (tJC:KKE*i@#@&amp;7i8~mmO1tcKm*P @#@&amp;i7db0~`DX2nK0Po\S_YYa]n;!+kY~"x~rEUNWk +[E,#P`@#@&amp;d7diG(L~{P +h,(tJCDY2I;;nkY`*I@#@&amp;ddiN@#@&amp;id)@#@&amp;dN@#@&amp;d.+D;D PG8Ni@#@&amp;N@#@&amp;@#@&amp;6; mObW PoY}8LmO`bNb~P@#@&amp;ir0,`NK^;:xDRL+O3^+h+ OAHq[b, @#@&amp;7iDnY!. P[Km!:+ YcL+D2s+s+UO~Xq9ck9#i@#@&amp;78,+^/nPrW,`[W1;:xO mVVb~P@#@&amp;di.Y;Mx,NW1EsnxDRCV^$r[Yi@#@&amp;78,+Vkn~k6PvNGm;hxOR^CXDdb, @#@&amp;7iDnY!. P[Km!:+ YcslH+./]k[Dp@#@&amp;iN@#@&amp;8@#@&amp;@#@&amp;l^+MYcB n^mG:~YKPKuh?lsG R^WsZE#I@#@&amp;@!z/1Db2Y@*@#@&amp;@!J4G[H@*@#@&amp;@!z4Y:^@*Hs8AAA==^#~@&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&#35299;&#23494;&#32467;&#26524;&#65306;&lt;br /&gt;&lt;html&gt; &lt;br /&gt;&lt;title&gt;PHPSalon.com&lt;/title&gt; &lt;br /&gt;&lt;body&gt; &lt;br /&gt;&lt;script language="javascript"&gt; &lt;br /&gt;function getXmlObject() { &lt;br /&gt;    var obj = null; &lt;br /&gt;    try { &lt;br /&gt;        obj = new ActiveXObject("Msxml2.XMLHTTP"); &lt;br /&gt;    } catch(e) { &lt;br /&gt;        try { &lt;br /&gt;            obj = new ActiveXObject("Microsoft.XMLHTTP"); &lt;br /&gt;        } catch(oc) { &lt;br /&gt;            if (typeof XMLHttpRequest != "undefined" ) { &lt;br /&gt;                obj = new XMLHttpRequest(); &lt;br /&gt;            } &lt;br /&gt;        } &lt;br /&gt;    } &lt;br /&gt;    return obj; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;function getObject(id) { &lt;br /&gt;    if (document.getElementById) { &lt;br /&gt;        return document.getElementById(id); &lt;br /&gt;    } else if (document.all) { &lt;br /&gt;        return document.all[id]; &lt;br /&gt;    } else if (document.layers) { &lt;br /&gt;        return document.layers[id]; &lt;br /&gt;    } &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;alert('Welcome to PHPSalon.com!'); &lt;br /&gt;&lt;/script&gt; &lt;br /&gt;&lt;/body&gt; &lt;br /&gt;&lt;/html&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 09 Apr 2006 21:35:29 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1871</guid>
      <author>vista8 (joe)</author>
    </item>
    <item>
      <title>Using base64 to encode/decode data</title>
      <link>http://snippets.dzone.com/posts/show/1618</link>
      <description>If you have binary data, you can encode it with&lt;br /&gt;ascii character to store it more safely.&lt;br /&gt;base64 module is an efficient choice to do so.&lt;br /&gt;It uses characters from this set&lt;br /&gt;('=' is used for padding at the end.)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ABCDEFGHIJKLMNOPQRSTUVWXYZ&lt;br /&gt;abcdefghijklmnopqrstuvwxyz&lt;br /&gt;0123456789+/&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Here's how to use it.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; import base64&lt;br /&gt;&gt;&gt;&gt; base64.encodestring('hello world')&lt;br /&gt;'aGVsbG8gd29ybGQ=\n'&lt;br /&gt;&gt;&gt;&gt; base64.decodestring(_)&lt;br /&gt;'hello world'&lt;br /&gt;&gt;&gt;&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;If the text is long, the base64 module will split&lt;br /&gt;the encoded data into multiple lines.&lt;br /&gt;If you don't wan't it to be split. You can use&lt;br /&gt;binascii.b2a_base64 instead of base64.encodestring and&lt;br /&gt;binascii.a2b_base64 instead of base64.decodestring&lt;br /&gt;</description>
      <pubDate>Thu, 02 Mar 2006 19:28:38 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1618</guid>
      <author>korakot (Korakot Chaovavanich)</author>
    </item>
  </channel>
</rss>
