今日、Discuz フォーラムのスタイルを変更したいと思いました。スタイル ファイルをダウンロードしたところ、Base64 で暗号化されていることがわかりました。
Xiao Lin は復号化されたページを推奨しました。抽出されたコードは次のとおりです。
次のようにコードをコピーします。
<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
<頭>
<title>Base64、URL、16 進数のエンコーディングとデコーディング</title>
<meta name=description content=クライアント側 JavaScript を使用して、Base64 または URL エンコードでデータをエンコードまたはデコードします />
<meta name=keywords content=base64, Base 64, urlencode, urldecode, hexencode, hex エンコード, hexdecode hex decode, javascript Base64, javascript Base 64, javascript urlencode, javascript urldecode, javascript hexencode, javascript hexdecode />
<link rel=shortcut icon href=http://ostermiller.org/favicon.ico type=image/x-icon />
<スクリプト言語=javascript タイプ=テキスト/javascript>
<!--
関数 urlDecode(str){
str=str.replace(new RegExp('//+','g'),' ');
unescape(str)を返します。
}
関数 urlEncode(str){
str=エスケープ(str);
str=str.replace(new RegExp('//+','g'),'%2B');
return str.replace(new RegExp('%20','g'),'+');
}
var END_OF_INPUT = -1;
varbase64Chars = 新しい配列(
'A'、'B'、'C'、'D'、'E'、'F'、'G'、'H'、
「I」、「J」、「K」、「L」、「M」、「N」、「O」、「P」、
'Q'、'R'、'S'、'T'、'U'、'V'、'W'、'X'、
'Y'、'Z'、'a'、'b'、'c'、'd'、'e'、'f'、
'g'、'h'、'i'、'j'、'k'、'l'、'm'、'n'、
'o'、'p'、'q'、'r'、's'、't'、'u'、'v'、
'w'、'x'、'y'、'z'、'0'、'1'、'2'、'3'、
'4'、'5'、'6'、'7'、'8'、'9'、'+'、'/'
);
var reverseBase64Chars = 新しい Array();
for (var i=0; i <base64Chars.length; i++){
reverseBase64Chars[base64Chars[i]] = i;
}
varbase64Str;
varbase64Count;
関数 setBase64Str(str){
Base64Str = str;
Base64カウント = 0;
}
関数 readBase64(){
if (!base64Str) は END_OF_INPUT を返します。
if (base64Count >=base64Str.length) END_OF_INPUT を返します。
var c = Base64Str.charCodeAt(base64Count) & 0xff;
Base64Count++;
cを返します。
}
関数 encodeBase64(str){
setBase64Str(str);
var 結果 = '';
var inBuffer = 新しい配列(3);
var lineCount = 0;
var 完了 = false;
while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){
inBuffer[1] = readBase64();
inBuffer[2] = readBase64();
結果 += (base64Chars[ inBuffer[0] >> 2 ]);
if (inBuffer[1] != END_OF_INPUT){
結果 += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
if (inBuffer[2] != END_OF_INPUT){
result += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
結果 += (base64Chars [inBuffer[2] & 0x3F]);
} それ以外 {
結果 += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
結果 += ('=');
完了 = true;
}
} それ以外 {
結果 += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
結果 += ('=');
結果 += ('=');
完了 = true;
}
行数 += 4;
if (lineCount >= 76){
結果 += ('/n');
行数 = 0;
}
}
結果を返します。
}
関数 readReverseBase64(){
if (!base64Str) は END_OF_INPUT を返します。
一方 (true){
if (base64Count >=base64Str.length) END_OF_INPUT を返します。
var nextCharacter =base64Str.charAt(base64Count);
Base64Count++;
if (reverseBase64Chars[nextCharacter]){
reverseBase64Chars[nextCharacter] を返します。
}
if (nextCharacter == 'A') は 0 を返します。
}
END_OF_INPUT を返します。
}
関数ntos(n){
n=n.toString(16);
if (n.length == 1) n=0+n;
n=%+n;
unscape(n) を返します。
}
関数 decodeBase64(str){
setBase64Str(str);
var 結果 = ;
var inBuffer = 新しい配列(4);
var 完了 = false;
while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
&& (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
inBuffer[2] = readReverseBase64();
inBuffer[3] = readReverseBase64();
結果 += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
if (inBuffer[2] != END_OF_INPUT){
結果 += ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
if (inBuffer[3] != END_OF_INPUT){
結果 += ntos((((inBuffer[2] << 6) & 0xff) | inBuffer[3]));
} それ以外 {
完了 = true;
}
} それ以外 {
完了 = true;
}
}
結果を返します。
}
var digitArray = new Array('0','1','2','3','4','5','6','7','8','9','a', 'b'、'c'、'd'、'e'、'f');
関数 toHex(n){
var 結果 = ''
var 開始 = true;
for (var i=32; i>0;){
i-=4;
var 桁 = (n>>i) & 0xf;
if (!開始 || 桁 != 0){
開始 = false;
結果 += 数字配列[数字];
}
}
return (結果==''?'0':結果);
}
関数パッド(str, len, パッド){
var 結果 = str;
for (var i=str.length; i<len; i++){
結果 = パッド + 結果;
}
結果を返します。
}
関数 encodeHex(str){
var 結果 = ;
for (var i=0; i<str.length; i++){
結果 += Pad(toHex(str.charCodeAt(i)&0xff),2,'0');
}
結果を返します。
}
関数 decodeHex(str){
str = str.replace(new RegExp(s/[^0-9a-zA-Z]//g));
var 結果 = ;
var nextchar = ;
for (var i=0; i<str.length; i++){
nextchar += str.charAt(i);
if (nextchar.length == 2){
結果 += ntos(eval('0x'+nextchar));
次の文字 = ;
}
}
結果を返します。
}
//--></script>
</head>
<本文>
<form name=code onsubmit=return false()>
<textarea name=text style='width:100%;height:75%;' onfocus='if (this.value==エンコードまたはデコードするテキストをここに入力します。){this.value=;}'>テキストを入力してくださいここでエンコードまたはデコードします。</textarea>
<テーブル>
<tr><td align=center>
<input value=Encode type=button onclick=document.code.text.value=urlEncode(document.code.text.value);>
</td><td align=center>
URL
</td><td align=center>
<入力値=デコードタイプ=ボタンonclick=document.code.text.value=urlDecode(document.code.text.value);>
</td></tr>
<tr><td align=center>
<入力値=エンコードの種類=ボタン onclick=document.code.text.value=encodeBase64(document.code.text.value);>
</td><td align=center>
64 進数
</td><td align=center>
<入力値=デコードタイプ=ボタンonclick=document.code.text.value=decodeBase64(document.code.text.value);>
</td></tr>
<tr><td align=center>
<入力値=エンコードタイプ=ボタンonclick=document.code.text.value=encodeHex(document.code.text.value);>
</td><td align=center>
16進数
</td><td align=center>
<入力値=デコードタイプ=ボタンonclick=document.code.text.value=decodeHex(document.code.text.value);>
</td></tr>
<tr><td align=center>
</td><td align=center>
<入力タイプ=リセット値=クリア>
</td><td align=center>
</td></tr>
</テーブル>
</form>
<時間>
Base64 エンコード/デコードは、<a href=http://ostermiller.org/utils/Base64.html>Java Base64 エンコーダ/デコーダ</a>から移植されました。<br>
Base64 エンコード/デコードが <a href=http://ostermiller.org/base64_actionscript.html>Macromedia Actionscript</a> に移植されました。<br>
<h3>ライセンス</h3>
<p>このプログラムはフリー ソフトウェアです。再配布したり、改変したりすることができます。
Free によって公開されている GNU 一般公衆利用許諾契約書の条項に基づいて
Software Foundation; ライセンスのバージョン 2、または (任意)
それ以降のバージョン。</p>
<p>このプログラムは役立つことを願って配布されています。
ただし、いかなる保証もなく、商品性の暗黙の保証もありません。
または特定の目的への適合性を参照してください。
<a href=http://www.gnu.org/copyleft/gpl.html>GNU
詳細については、 一般公衆利用許諾</a>を参照してください。</p>
<div style=padding:0.2cm;><a href=http://ostermiller.org/calc/>その他のコンバータ、電卓、その他の JavaScript 機能</a></div>
<div style=padding:0.2cm;text-align:right;><a href=http://ostermiller.org/>ostermiller.org</a> (<a href=http://ostermiller.org/siteindex .html>サイト インデックス</a>)</div>
<div style=padding:0.2cm;><p>著作権 <a href=http://ostermiller.org/contact.pl?regarding=JavaScript+Encoding class=mail>Stephen Ostermiller</a> 2003-2006</ p></div>
</body>
</html>