00001 /* 00002 anyData.hpp 00003 This file prevents the browser from monkeying with my form data 00004 It needs code on the client side to encode/decode in the inverse op. 00005 00006 (c) David McCombs W3 Systems 2006 00007 00008 */ 00009 #include <map> 00010 typedef map<string, string> anyFormDataArray; 00011 00012 class hexEncoder 00013 { 00014 private: 00015 anyFormDataArray aryHexEncode; 00016 anyFormDataArray aryHexDecode; 00017 00018 public: 00019 hexEncoder() 00020 { 00021 // ascii lookups 00022 aryHexEncode["\t"]="09";aryHexEncode["\n"]="0A";aryHexEncode["\r"]="0D"; 00023 aryHexEncode[" "]="20"; 00024 aryHexEncode["!"]="21";aryHexEncode["\""]="22";aryHexEncode["#"]="23";aryHexEncode["$"]="24"; 00025 aryHexEncode["%"]="25";aryHexEncode["&"]="26";aryHexEncode["'"]="27";aryHexEncode["("]="28"; 00026 aryHexEncode[")"]="29";aryHexEncode["*"]="2A";aryHexEncode["+"]="2B";aryHexEncode[","]="2C"; 00027 aryHexEncode["-"]="2D";aryHexEncode["."]="2E";aryHexEncode["/"]="2F";aryHexEncode["0"]="30"; 00028 aryHexEncode["1"]="31";aryHexEncode["2"]="32";aryHexEncode["3"]="33";aryHexEncode["4"]="34"; 00029 aryHexEncode["5"]="35";aryHexEncode["6"]="36";aryHexEncode["7"]="37";aryHexEncode["8"]="38"; 00030 aryHexEncode["9"]="39";aryHexEncode[":"]="3A";aryHexEncode[";"]="3B";aryHexEncode["<"]="3C"; 00031 aryHexEncode["="]="3D";aryHexEncode[">"]="3E";aryHexEncode["?"]="3F";aryHexEncode["@"]="40"; 00032 aryHexEncode["A"]="41";aryHexEncode["B"]="42";aryHexEncode["C"]="43";aryHexEncode["D"]="44"; 00033 aryHexEncode["E"]="45";aryHexEncode["F"]="46";aryHexEncode["G"]="47";aryHexEncode["H"]="48"; 00034 aryHexEncode["I"]="49";aryHexEncode["J"]="4A";aryHexEncode["K"]="4B";aryHexEncode["L"]="4C"; 00035 aryHexEncode["M"]="4D";aryHexEncode["N"]="4E";aryHexEncode["O"]="4F";aryHexEncode["P"]="50"; 00036 aryHexEncode["Q"]="51";aryHexEncode["R"]="52";aryHexEncode["S"]="53";aryHexEncode["T"]="54"; 00037 aryHexEncode["U"]="55";aryHexEncode["V"]="56";aryHexEncode["W"]="57";aryHexEncode["X"]="58"; 00038 aryHexEncode["Y"]="59";aryHexEncode["Z"]="5A";aryHexEncode["["]="5B";aryHexEncode["\\"]="5C"; 00039 aryHexEncode["]"]="5D";aryHexEncode["^"]="5E";aryHexEncode["_"]="5F";aryHexEncode["`"]="60"; 00040 aryHexEncode["a"]="61";aryHexEncode["b"]="62";aryHexEncode["c"]="63";aryHexEncode["d"]="64"; 00041 aryHexEncode["e"]="65";aryHexEncode["f"]="66";aryHexEncode["g"]="67";aryHexEncode["h"]="68"; 00042 aryHexEncode["i"]="69";aryHexEncode["j"]="6A";aryHexEncode["k"]="6B";aryHexEncode["l"]="6C"; 00043 aryHexEncode["m"]="6D";aryHexEncode["n"]="6E";aryHexEncode["o"]="6F";aryHexEncode["p"]="70"; 00044 aryHexEncode["q"]="71";aryHexEncode["r"]="72";aryHexEncode["s"]="73";aryHexEncode["t"]="74"; 00045 aryHexEncode["u"]="75";aryHexEncode["v"]="76";aryHexEncode["w"]="77";aryHexEncode["x"]="78"; 00046 aryHexEncode["y"]="79";aryHexEncode["z"]="7A";aryHexEncode["{"]="7B";aryHexEncode["|"]="7C"; 00047 aryHexEncode["}"]="7D"; 00048 00049 // reverse lookups 00050 aryHexDecode["09"]="\t";aryHexDecode["0A"]="\n";aryHexDecode["0D"]="\r"; 00051 aryHexDecode["20"]=" "; 00052 aryHexDecode["21"]="!";aryHexDecode["22"]="\"";aryHexDecode["23"]="#";aryHexDecode["24"]="$"; 00053 aryHexDecode["25"]="%";aryHexDecode["26"]="&";aryHexDecode["27"]="'";aryHexDecode["28"]="("; 00054 aryHexDecode["29"]=")";aryHexDecode["2A"]="*";aryHexDecode["2B"]="+";aryHexDecode["2C"]=","; 00055 aryHexDecode["2D"]="-";aryHexDecode["2E"]=".";aryHexDecode["2F"]="/";aryHexDecode["30"]="0"; 00056 aryHexDecode["31"]="1";aryHexDecode["32"]="2";aryHexDecode["33"]="3";aryHexDecode["34"]="4"; 00057 aryHexDecode["35"]="5";aryHexDecode["36"]="6";aryHexDecode["37"]="7";aryHexDecode["38"]="8"; 00058 aryHexDecode["39"]="9";aryHexDecode["3A"]=":";aryHexDecode["3B"]=";";aryHexDecode["3C"]="<"; 00059 aryHexDecode["3D"]="=";aryHexDecode["3E"]=">";aryHexDecode["3F"]="?";aryHexDecode["40"]="@"; 00060 aryHexDecode["41"]="A";aryHexDecode["42"]="B";aryHexDecode["43"]="C";aryHexDecode["44"]="D"; 00061 aryHexDecode["45"]="E";aryHexDecode["46"]="F";aryHexDecode["47"]="G";aryHexDecode["48"]="H"; 00062 aryHexDecode["49"]="I";aryHexDecode["4A"]="J";aryHexDecode["4B"]="K";aryHexDecode["4C"]="L"; 00063 aryHexDecode["4D"]="M";aryHexDecode["4E"]="N";aryHexDecode["4F"]="O";aryHexDecode["50"]="P"; 00064 aryHexDecode["51"]="Q";aryHexDecode["52"]="R";aryHexDecode["53"]="S";aryHexDecode["54"]="T"; 00065 aryHexDecode["55"]="U";aryHexDecode["56"]="V";aryHexDecode["57"]="W";aryHexDecode["58"]="X"; 00066 aryHexDecode["59"]="Y";aryHexDecode["5A"]="Z";aryHexDecode["5B"]="[";aryHexDecode["5C"]="\\"; 00067 aryHexDecode["5D"]="]";aryHexDecode["5E"]="^";aryHexDecode["5F"]="_";aryHexDecode["60"]="`"; 00068 aryHexDecode["61"]="a";aryHexDecode["62"]="b";aryHexDecode["63"]="c";aryHexDecode["64"]="d"; 00069 aryHexDecode["65"]="e";aryHexDecode["66"]="f";aryHexDecode["67"]="g";aryHexDecode["68"]="h"; 00070 aryHexDecode["69"]="i";aryHexDecode["6A"]="j";aryHexDecode["6B"]="k";aryHexDecode["6C"]="l"; 00071 aryHexDecode["6D"]="m";aryHexDecode["6E"]="n";aryHexDecode["6F"]="o";aryHexDecode["70"]="p"; 00072 aryHexDecode["71"]="q";aryHexDecode["72"]="r";aryHexDecode["73"]="s";aryHexDecode["74"]="t"; 00073 aryHexDecode["75"]="u";aryHexDecode["76"]="v";aryHexDecode["77"]="w";aryHexDecode["78"]="x"; 00074 aryHexDecode["79"]="y";aryHexDecode["7A"]="z";aryHexDecode["7B"]="{";aryHexDecode["7C"]="|"; 00075 aryHexDecode["7D"]="}"; 00076 } 00077 string w3HexEncode( string AsciiIn ) 00078 { 00079 string HexOut = ""; 00080 for(int i=0;i<AsciiIn.length();i++) 00081 { 00082 string toCvt = AsciiIn.substr(i,1); 00083 HexOut += aryHexEncode[toCvt]; 00084 } 00085 return HexOut; 00086 } 00087 string w3hexDecode( string HexIn ) 00088 { 00089 string AsciiOut = ""; 00090 for( int i=0;i<HexIn.length();i+=2) 00091 { 00092 string toCvt = HexIn.substr(i,2); 00093 AsciiOut += aryHexDecode[toCvt]; 00094 } 00095 return AsciiOut; 00096 } 00097 } ; 00098
1.5.5