【バッチ】aiueoという文字列を数値化したい

実現したいこと

https://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_0000-0FFF
unicode表によると「aiueo」は「0x0061006900750065006f」となるようですが
unicodeに則らなくても何進数であろうと構いませんのでバッチで数値化を実現したいです。
また、その逆も変換できるようにしたいです。

背景

特定の数名のユーザのためにバッチファイルを作成していますが、
その中にはDBへの接続情報が書かれてしまっています。
ユーザーには秘匿したいのですが、当然メモ帳等で開かれると一発アウトです。
最初はexe化することで回避を考えていましたが、諸事情によりNGになりました。

そこでハッシュ関数を利用する方法を思いつきました。
https://qiita.com/tsumita7/items/fe8ca1a77a3678d1717b
こちらのハッシュ関数を元に、以下のようなことを実現しようとしています。

  1. ユーザーにこのシステム専用のパスワードを作成してもらい尋ねる
  2. 教えていただいた私はその値を数値化する
  3. 数値化したパスワードをハッシュ関数に通す
  4. DBの接続生情報も同様に数値化し、3の結果と排他的論理和をとる。この値をバッチファイル内にベタ書きしてユーザーに渡す
  5. ユーザーはバッチ起動時に1のパスワードを入力する
  6. バッチの中でそのパスワードを数値化→ハッシュ化し、その値とベタ書きされた値と排他的論理和をとると「DBの接続生情報が数値化されたもの」が出てくるのでそれを文字列に戻してDBに接続する

前提

  • セキュリティの都合上windows標準に入っていない仕組みの利用は不可
    • バッチのライブラリ等もNG
    • python等ももちろんNG
    • 3rd partyツールもNG
    • powershellもNG
  • ユーザーがwiresharkやメモリ解析ツールで見れば生情報普通に見れるんじゃ・・・は気にしなくていい

試したこと

ひとまずChatGTPに頼ってみましたがうまく動きませんでした。

bat

1@echo off 2setlocal enabledelayedexpansion 3 4set "input=aiueo" 5set "output=" 6 7for /f "delims=" %%a in (`cmd /u /c "echo %input%"`) do set "input=%%a" 8 9for /l %%i in (0,1,100) do ( 10 set "char=!input:~%%i,1!" 11 if "!char!"=="" goto :done 12 for /f "tokens=2 delims=:=" %%A in (`chcp`) do ( 13 set /a "char_code=0x!char!" 14 set /a "char_code=char_code %% 0x10000" 15 set "output=!output! !char_code!" 16 ) 17) 18 19:done 20echo %output%

cmdというコマンドがないのは分かったのですがどう直せばいいのか分からず。。

コメントを投稿

0 コメント