問題タブ [base32]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Base 32 の Java の BigInteger C#
Java の次の行を C# に変換するにはどうすればよいでしょうか。サイズが 130 ビットのランダムな BigInteger を生成し、それを base 32 (つまり、 decimal ではない) の文字列に変換してから、文字列を操作します。
どうすればC#でそれを達成できますか?
- ランダムな 130 ビット BigInteger を生成する
- base 32 の文字列に変換します
ランダムな BigInteger に関しては、次の関数があります。
base 32 変換に対応していないこの質問から取得: C# での Java の BigInteger と同等
ただし、その関数も正しいかどうかはわかりません。
私がこれまでに持っているC#コード、RandomIntegerは上記の関数です:
swift - SwiftでUInt8変数からNビットを取得する方法は?
Swiftを独学でアプリにBase32デコードを実装しようとしていますが、この言語でバイトレベルを下回る方法を理解できないようです。UInt8 を 5 ビットに切り詰めて、それを Data オブジェクトに追加してから操作できると便利です。
私はPythonで書かれたこの関数を持っています:
これは、base32 でデータの 16 進表現を出力するように機能します。これをSwiftで複製したかったのですが(16進部分への変換ではありません)。しかし、私はこれまでに得ました:
これを行う簡単な方法はありますか?Google で何も見つかりません。
c# - 間違ったキーを生成する時間ベースの OTP 生成 C#
現在、多くの TOTP クラスを実装していますが、それらはすべて間違った出力を生成します。以下に、最も単純なものに使用したコードを投稿しました。
実装して Google Authenticator と同じように動作させたいと思います - たとえば、コードhttps://gauth.apps.gbraad.nl/#mainのようにします。
私が実現したいのは、アプリケーションのフロントエンドで、ユーザーが秘密の「BANANAKEY123」を入力し、これが「IJAU4QKOIFFUKWJRGIZQ====」の base32 文字列に変換されることです。
キーの下のコンストラクターでは、「BANANAKEY123」になります。しかし、何らかの理由で、このコードでは GAuth OTP ツールと同じ OTP キーが生成されません。
合理的な間違いは次の 2 つだけです。
が間違っているか、タイミング関数が間違っています。両方をチェックしましたが、どちらにも欠陥は見つかりませんでした。誰かが私を正しい方向に助けてくれますか?ありがとうございました!