問題タブ [base62]
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.
python - ベース62変換
整数を62進数に変換するにはどうすればよいですか(16進数のようですが、これらの数字は '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')。
私はそれに適したPythonライブラリを見つけようとしていますが、それらはすべて文字列の変換に専念しているようです。Python base64モジュールは文字列のみを受け入れ、1桁を4文字に変換します。私はURL短縮サービスが使用するものに似たものを探していました。
php - URLのMD5をbase62に変換します
ベース62(A-Za-z0-9)に変換するスクリプトがありますが、MD5から数値を取得するにはどうすればよいですか?
私は多くの場所で、MD5からの数値がphpが整数として処理できるよりも大きいため、不正確になることを読みました...とにかく短いURLが必要で、ハッシュ全体を使用する予定はなかったので、おそらく8文字だけです。それの....
だから私の質問は、MD5ハッシュの数の一部を取得する方法ですか?
また、MD5ハッシュの一部のみを使用するのは悪い考えですか?
php - PHP - ベース 62 まで base_convert() する方法
基数 2 から基数 62 まで機能する関数が必要base_convert()
ですが、使用する必要がある数学がありません。PHP の制限により、bcmath を使用する必要があることはわかっています。これで問題ありません。
これらのような関数は、基数 10 から別の基数 62 までの間で数値を変換しますが、同じ機能を実装したいと思いますbase_convert()
。たとえば、任意の基数間で変換できる関数は 1 つだけです。
これを行うと思われる関数を見つけましたが、冗長で遅いコードがあるように感じます。ドイツ語を知っていれば、少し調整したいと思います。=(
関数のより読みやすいバージョンを次に示します。
上記の関数を説明したり、任意のベース間の直接変換のプロセスについて説明したりできますか?
sql - マルチベース変換 - URL 短縮サービスのすべての組み合わせを使用
URL 短縮サービスを作成していますが、数値 (id) を文字列にエンコードする最適な方法に苦労しています。
文字 0-9、AZ、az を使用しているため、基本的に base-62 エンコーディングになります。これはかなり基本的なことですが、考えられるすべてのコードを利用しているわけではありません。生成されるコードは次のとおりです。
コード 00 から 0z は使用されないことに注意してください。000 から 0zz も同様です。次のように、すべてのコードを使用したいと思います。
base-62 と base-63 の組み合わせで、位置に応じて異なる base になります... base-62 の使用は簡単です。たとえば、次のようになります。
しかし、すべてのコードを利用するために、それを多塩基変換することはまだできていません。
ruby-on-rails - RailsアプリでIDを難読化する
サーバーを離れるすべてのID、つまりURLとHTML出力に表示されるIDを難読化しようとしています。
エンコードとデコードのメソッドを持つ単純なBase62ライブラリを作成しました。ActiveRecordのidメソッドを定義して、エンコードされたバージョンのidを返すように上書きし、コントローラーを調整して、デコードされたリソースをロードするとparams[:id]
、目的の結果が得られます。IDはURLでbase62エンコードされ、応答には正しいリソースが表示されます。
has_many
今、私は関係を通して定義されたサブリソースがロードされていないことに気づき始めました。User
たとえば、私はそれと呼ばれるレコードを持っていhas_many
Post
ます。が付いた投稿がありますが、現在User.find(1).posts
は空user_id = 1
です。私の説明では、ActiveRecordは、と比較するのuser_id
ではなく、のメソッドと(私が上書きPost
した)メソッドを比較する必要があります。つまり、基本的にこれは私のアプローチを役に立たなくします。 id
User
self[:id]
私が欲しいのはobfuscates_id
、モデルで定義するようなもので、残りは処理されます。つまり、適切な場所ですべてのエンコード/デコードを実行し、サーバーからIDが返されないようにします。
利用可能な宝石はありますか、または誰かがこれを達成するためのヒントを持っていますか?私はこれを最初に試したのではないに違いない。
jquery - さまざまなケースで物事を選択するのに問題があるjQuery
注: あなたが「ただの」jQuery 開発者である場合、この投稿の一部は少し複雑に見えるかもしれません (Base62 エンコーディングなど) - 実際はそうではありません。より技術的な詳細は質問に関連していますが、核心はjQueryが大文字のものを選択しないということです。ありがとう!
こんにちは皆さん!
だから私はAjaxによって生成されたリストを持っています。リストのタイトルをクリックすると、その ID が送信され、リスト アイテムがその横に表示されます。標準的なもの。
auto_increment ID を使用しているため、ユーザーにデータベース内の送信数を知られたくありません。そのため、Base62 にエンコードしてから、再度デコードしています。[これは問題とは無関係であることに注意してください] 。
私のリストが生成されると、このコードが出力されます。jQuery と一緒に CodeIgniter PHP を使用しています - これはデータベース結果のループにあります。$this->basecrypt->encode()
は、整数 (ID) を Base62 に変換する単純な CI ライブラリです。
そして、ページのさらに下に:
ご覧のとおり、これはすべて同じループで生成されます。出力されたソース コードを表示すると、次のようになります。
$('#title-1T').click[...]
その後<div id="title-1T" [...]
つまり、jQuery には何の問題もないはずですよね? ID の Base62 化を開始するまでは、すべて正常に機能していました。大文字が含まれている場合、jQueryはIDを選択できない/選択しないと思います。
私が間違っていたら許してください-私は比較的言えば、jQueryにかなり慣れていません-しかし、私のポイントをテストするために、私$this->basecrypt->encode()
はBase36に変更しました。以前、使用していた0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
後、使用していた0123456789abcdefghijklmnopqrstuvwxyz
大文字がない場合、jQuery は正常に選択 (およびテスト目的でアラートを表示) できます。
それで、なにかお手伝いできますか?Base36 で数字と小文字だけを使い続けても安全ですか?そうでない場合、jQuery の問題のある選択プロセスについて何ができますか?
ありがとう!
ジャック
編集:以下に、ページのコード例をいくつか示します。
これは、ファイル ajaxlist.php で返されるスクリプトの一部です。これは Ajax から呼び出され、ページが読み込まれた数秒後に表示されます。最初のすぐ近くに追加してalert("clicked");
、それが表示されるかどうかを確認しましたが、残念ながら表示されません... $(document).ready(function() {
上記のコード (そのすぐ下) と同時に、同じファイルから返されるのは次のとおりです。
これで問題が解決する場合は、お知らせください。
編集 2:実際の出力がブラウザに返されます。
これは Firebug から取得したもので、ブラウザーに返されたデータ (Ajax) です。
さあ、それがうまくいかないと言うことはできません... できますか?!
c++ - C ++でmd5文字列をbase 62文字列に変換する
md5 文字列 (base 16) を c++ で base 62 文字列に変換しようとしています。base 62 に変換するためにこれまでに見つけたすべてのソリューションは、数値を 64 ビット整数以下で表すことができる場合にのみ機能します。md5 文字列は 128 ビットで、私はこれでどこにも行きません。
bigint ライブラリをインクルードして、それで終了する必要がありますか?
php - このベース62のPHP変換関数/アルゴリズムについて説明してください
誰かが以下のコードを説明できますか?それか、いくつかの光を当てるいくつかのリソースを私に指摘してください:)
整数をbase62文字列に変換します。
更新:私が尋ねるつもりだったもの:誰かが以下のアルゴリズムを説明できますか?:) ありがとう。
python - Python でソルトを作成する
Pythonでランダムな16文字のbase-62ソルトを作成するにはどうすればよいですか? プロトコルに必要ですが、どこから始めればよいかわかりません。ありがとう。
algorithm - この URL 短縮サービスの難読化アルゴリズムは機能しますか?
免責事項: URL 短縮サービスの作成方法を尋ねているわけではありません ( base-62 でエンコードされた文字列を使用するHEREにある「全単射関数」の回答を既に実装しています)。代わりに、この実装を拡張して、生成された文字列を難読化し、両方になるようにしたいと考えています。
A) 簡単に推測できないシーケンス、および
B) まだ全単射。
base-62 文字セットは簡単にランダム化できますが、問題は、他の基数の他の数値と同じように増加することです。たとえば、考えられる漸進的進行の 1 つは次のようなものです。{aX9fgE, aX9fg3, aX9fgf, aX9fgR, … ,}
要件A)に関しては満足している難読化手法を思いつきましたが、それがB)を満たすかどうかは部分的にしか確信が持てません。アイデアは次のとおりです。
インクリメンタル アプローチで確実に変更されるのは、「1 の位」だけです (実用上の理由から、10 進数の用語を使用します)。前に示した進行例では、それは{E, 3, f, R, …}
. したがって、base-62 セットの各文字に固有のオフセット番号 (たとえば、「ゼロ文字」からの距離) がある場合、「1 の位」文字のオフセットを残りの文字列に適用できます。
たとえば、ベース 5 の文字セット{A, f, 9, p, Z, 3}
(0 から 5 までの昇順) を想定してみましょう。それぞれに、それぞれ 0 から 5 の一意のオフセットがあります。カウントは次のよう{A, f, 9, p, Z, 3, fA, ff, f9, fp, …}
になります。したがって、アルゴリズムは、 の値が与えられると、 andfZ3p
を見て、p
+3 のオフセットを持ち、文字列を次のように並べ替えますZf9p
(基数 5 のセットが循環配列であると仮定します)。次の増分番号は でfZ3Z
、Z
のオフセットが +4 の場合、アルゴリズムは を返します39pZ
。これらの並べ替えられた結果は、実際のbase-62 でエンコードされた文字列を見ることのない「一意の URL」としてユーザーに渡されます。
このアプローチは確かに元に戻せます。最後の文字を見て、負のオフセットで同じ順列を実行します。そして、この理由から、それはまだ全単射でなければならないと考えています。しかし、これが必ずしも正しいかどうかはわかりませんか?私が考慮していないエッジ/コーナーケースはありますか?
編集:私の意図は、パターンのセキュリティよりも短縮URLの長さに重きを置いています。暗号化機能、ブロック暗号などを含む多くのソリューションがあることを認識しています。しかし、私はA)を達成するための最善の方法を尋ねているのではなく、「私のオフセットアプローチはB)を満たすか」ということを強調したいと思います。
あなたが見つけることができる任意の穴をいただければ幸いです。