Base64 とか Base32 などは、フィルタストリームとして実装しているので、netstream スキームの Proxy オブジェクトとして、多段Proxy のように設定する事が可能
符号化コマンドとしての StreamRelay.NET.exe
C:\>type a.txt HelloWorld C:\>StreamRelay.NET.exe -LocalPort 0 -RemotePort 0 -LocalInputFile a.txt -RemoteOutputFile a.txt.out -RemoteProxy netstream:///?Base64encode C:\>type a.txt.out SGVsbG9Xb3JsZA== C:\>StreamRelay.NET.exe -LocalPort 0 -RemotePort 0 -LocalInputFile a.txt.out -LocalProxy netstream:///?Base64decode HelloWorld
符号化のオプションというか、様々なアルゴリズムの一覧
StreamRelay.NET.exe -ListFilter
符号化のオプションというか、様々なアルゴリズムの一覧(Base16系)
- Hexdecode/Hexencode
いわゆる ヘキサ表示 とか 16進数表示
- Urldecode(="CharSet")/Urlencode → URLエンコード(「%」+16進数表示)
- Quoteddecode(="CharSet")/Quotedencode → QuotePrintable(「=」+16進数表示)
符号化のオプションというか、様々なアルゴリズムの一覧(Base64系)
- Base64decode/Base64encode は63番目→「+」、64番目→「/」、パディング→「=」
- Base64decodeFileSafe/Base64encodeFileSafe は63番目→「+」、64番目→「-」、パディング→「=」
- Base64decodeUrlSafe/Base64encodeUrlSafe は63番目→「-」、64番目→「_」、パディング→「=」
- Base64decodeXmlName/Base64encodeXmlName は63番目→「.」、64番目→「-」、パディング→「=」
- Base64decodeXmlId/Base64encodeXmlId は63番目→「_」、64番目→「:」、パディング→「=」
- Base64decodeRegularExpression/Base64decodeRegularExpression は63番目→「!」、64番目→「-」、パディング→「=」
- Base64decodeProgramid1/Base64encodeProgramid1 は63番目→「_」、64番目→「-」、パディング→「=」
- Base64decodeProgramid2/Base64encodeProgramid2 は63番目→「.」、64番目→「_」、パディング→「=」
- BinHexdecode/BinHexencode は Base64 のような置換
- BinHexdecorate/BinHexencorate は BinHex の装飾処理
- XXdecoding/XXencoding は Base64 のような置換
- Radix64decode/Radix64encode は Base64 のような置換
- uudecoding/uuencoding は Base64 のような置換
- yenc/ydec は Base64 のような置換
- Pack6decode/Pack6encode もたしか Base64 のような置換だった気がする
- defish/enfish は Base64 のようなおさかな符号化
- defish="CharSet"/enfish="CharSet" は65種類(65番目はパディング)を並べる
- Base64decodeCustom="Seed(size=65)"[CharSet]/Base64encodeCustom="Seed(size=65)"[CharSet] も65種類(65番目はパディング)を並べる(文字コードも指定できる)
具体的なシードなどは Base64 Wikipedia と yEnc Wikipedia と Xxencoding Wikipedia と Uuencoding Wikipedia
符号化のオプションというか、様々なアルゴリズムの一覧(Base32系)
Plugin.sEncoding.dll に実装した。
- Base32Encode/Base32Decode → 普通の Base32
- Base32EncodeRfc4648/Base32DecodeRfc4648 → RFC4648方式
- Base32EncodeHex/Base32DecodeHex → Base32Hex方式
- Base32EncodeCrockford/Base32DecodeCrockford → Crockford方式
- Base32EncodeCustom/Base32DecodeCustom → Base64と同じように、自由にシードを設定する事がてきるよ
具体的なシードなどは Base32 Wikipedia
符号化のオプションというか、様々なアルゴリズムの一覧(Base85系)
- Base85decodeRfc1924/Base85encodeRfc1924 → RFC1924形式
- Base85decodeZ85/Base85encodeZ85 → Z85形式
- Base85decodeZmodem/Base85encodeZmodem → Zmodem形式
- Base85decodebtoa/Base85decodebtoa → btoa形式
- Base85decodebtoa42/Base85decodebtoa42 → btoa ver4.2 形式
- Base85decodeAdobe/Base85decodeAdobe → Adobe 形式
- Base85decodecustom="Seed(size=85)"[CharSet],"CompressionChars"/Base85encodecustom="Seed(size=85)"[CharSet],"CompressionChars" → 85種類の文字と文字コードと圧縮文字を自由に指定
具体的なシードなどは Ascii32 Wikipedia
符号化のオプションというか、様々なアルゴリズムの一覧(Base36系)
- Base36decode32/Base36encode32 → 32bit単位で Base36 する
- Base36decode64/Base36encode64 → 64bit単位で Base36 する
- Geohash36decode32/Geohash36decode32 → 32bit単位で Geohash 方式で Base36 する
- Geohash36decode64/Geohash36decode64 → 64bit単位で Geohash 方式で Base36 する
- Base36decode32custom="Seed(size=36)"[CharSet]/Base36encode32custom="Seed(size=36)"[CharSet] → 32bit単位で指定した36文字の Base36 を実施する
- Base36decode64custom="Seed(size=36)"[CharSet]/Base36encode64custom="Seed(size=36)"[CharSet] → 64bit単位で指定した36文字の Base36 を実施する
具体的なシードなどは Base36 Wikipedia
符号化のオプションというか、様々なアルゴリズムの一覧(Base94系)
シードは一つのタイプなので、一つだけ
- Base94decode/Base94encode
符号化のオプションというか、様々なアルゴリズムの一覧(Base122系)
シードは一つのタイプなので、一つだけ
- Base122decode/Base122encode
符号化のオプションというか、様々なアルゴリズムの一覧(Base65535系)
2バイトを UTF16(サロゲートペア含) とみなして文字列化する。
シードは一つのタイプなので、一つだけ
- Base65536decode/Base65536encode
完全バッファリングタイプの符号化
オプションで「bBase・・・・」というのは、完全バッファリングするタイプとなっている。
例えば「bBase91decode」は、ストリームを全部読みきって(Closeするまで、StreamRelay.NET.exe上のメモリにバッファリングする)から、全体のバイト配列を91進数と256進数の変換処理を実施する。
そのために、BigInteger構造体などを利用している
符号化のオプションというか、様々なアルゴリズムの一覧(Base58系)
完全バッファリングの方式のみだけど、以下のタイプがある
- bBase58decodeFlickr/bBase58encodeFlickr → Flickr方式のシードを使う
- bBase58decodeBitCoin/bBase58encodeBitCoin → BitCoin方式のシードを使う
- bBase58decoderipple/bBase58encoderipple → Ripple方式のシードを使う
具体的なシードなどは Base58 Wikipedia
符号化のオプションというか、様々なアルゴリズムの一覧(Base2系)
- KensiroDecoding/KensiroEncoding → ケンシロウ進数
- KensiroDecoding3/KensiroEncoding3 → ケンシロウ進数3(圧縮)
- PipiruDecoding/PipiruEncoding → ドクロちゃん進数
- Base2Decode/Base2Encode → ふつうの2進数
Kensiro[En|De]codingでは、オプションとして[基数文字(文字コード)]
という指定もできる。
例えば、
- KensiroEncoding=ぬふUTF-8
だと「ぬ→0」「ふ→1」で文字コード「UTF-8」という事になる。
つまり、
KensiroEncoding
⇔
KensiroEncoding=たあShift-JIS
⇔
KensiroEncoding=たあ
は同じ設定。
また
PipiruDecoding
⇔
KensiroEncoding=るぴShift-JIS
⇔
KensiroEncoding=るぴ
も同じ設定
符号化のオプションというか、様々なアルゴリズムの一覧(Base8系)
3Byte(24Bit)を一つのブロックとして、8進数に変換する。
- Base8decode[=[Seed][CharSet]]
- Base8encode[=[Seed][CharSet]]
で、3Byte(24Bit)単位で、符号化を実施する。
2Byteのカケラは18文字。
1Byteのカケラは9文字。
を返す。
Base8encode=01234567
⇔
Base8encode=01234567UTF-8
⇔
Base8encode
は同じ設定
符号化のオプションというか、様々なアルゴリズムの一覧(BaseNN系)
以下のオプションは、文字コードとシードを自由に設定できる
- bBaseNNdecode=["CharSet",]"Seed"
- bBaseNNencode=["CharSet",]"Seed"
Charset に文字コード、Seed に与えた文字数を基数となる符号化を実施する
符号化のオプションというか、様々なアルゴリズムの一覧(ビット演算系)
- inputNot/outputNot → NOT演算(ビット反転)
- inputRot256="num"/outputRot256="num" → ROT演算(何ビット加算/減算するか)(シーザー暗号っぽく)
- inputXor="file"/outputXor="file" → 指定したファイルと XOR 演算する
- inputOr="file"/outputOr="file" → 指定したファイルと OR 演算
- inputAnd="file"/outputAnd="file" → 指定したファイルと AND 演算
- inputXorHex="HexValue"/outputXorHex="HexValue" → 指定した16進表記のバイト配列と XOR 演算
- inputOrHex="HexValue"/outputOrHex="HexValue" → 指定した16進表記のバイト配列と OR 演算
- inputAndHex="HexValue"/outputAndHex="HexValue" → 指定した16進表記のバイト配列と AND 演算
符号化のオプションというか、様々なアルゴリズムの一覧(改行コード変換系)
- inputLf/outputLf → 「CrLf」→「Lf」
- inputCrLf/outputCrLf → 「CrLf」→「Lf」
符号化のオプションというか、様々なアルゴリズムの一覧(改行コード追加系)
- AddCrLf="num"/AddLf="num" → 指定したバイト数ごとに改行コードを挿入する。一行何文字とかに整形するのに使えるかも
符号化のオプションというか、様々なアルゴリズムの一覧(LanManHashEncode)
7Byteずつ LanManHash にして出力する
よって、エンコーダーはあるが、デコーダーはない
符号化のオプションというか、様々なアルゴリズムの一覧(HTTP Chunk)
HTTP の Keep-Alieve 時のチャンクエンコーディングっぽく符号化する
- HttpChunkdecode
- HttpChunkencode=("num")|("min"-"max")[%2c"RandomizeOption"]
乱数アルゴリズムを指定して、ランダムな塊にしてしまう
符号化のオプションというか、様々なアルゴリズムの一覧(X-CGI-Form-Encoded)
HTTP の POST の「値」にデータを埋め込む
- WebFormdecode
- WebFormencode=[(Name|Value)%3d("num")|("min"-"max")[%2c"RandomizeOption"]%26[Cha
rRandom%3d"RandomizeOption"]%26[CharList%3d"string(1moreURLEncode)"]%26[NameEnco
ding%3d"charSet"]
"名前" の文字コードや、"名前" として使う文字配列や長さ、データの塊の長さなどを乱数アルゴリズムを指定して、ランダムにすることができる
符号化のオプションというか、様々なアルゴリズムの一覧(Shino Encode)
データを ShinoEncode する
0-15(4Bit)を単語の文字数に割り当てた符号化方式
実際には、x だけ下駄を履かせる(0文字の単語ってないからね)
- Shinodecode(=<>)
- Shinoencode(=%26[VocabDicFile%3d<>]%26[VocabRandom%3d"Rando
mizeOption"%26[NoiseRandom%3d"NoReplaceRatio%2cRandomizeOption"%26[CaseRandom%3d
"nor/Case/CASE"%2cRandomizeOption"%26[SymbolRandom%3d"RandomizeOption"%26[Symbol
DicFile%3d<>
詳細は別に章を設けた方がいいかな。
符号化のオプションというか、様々なアルゴリズムの一覧(Stroke Encode)
0-15(4Bit)を漢字の画数に割り当てた符号化方式
しかし、実際には、辞書依存なんだな。
- Strokedecode(=[CharSet%3d"CharSetName"
- Strokeencode(=%26[VocabDicFile%3d<>]%26[VocabRandom%3d"Rand
omizeOption"%26[NoiseRandom%3d"NoReplaceRatio%2cRandomizeOption"%26[CharSet%3d"C
harSetName"