問題タブ [libsodium]
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 - "Libsodium-net" (C#) で TweetNacl (Java) によって生成された "SecretBox" を開けない
libsodium-net ライブラリを使用して C# で Nacl SecretBox (TweetNaclFast ライブラリを使用して Java で生成) を開く際に問題が発生しています。また、その逆もできません (TweetNaclFast を使用して、libsodium-net で生成されたボックスを開きます)。
次の例では、TweetNaclFast (Java) を使用して SecretBox を作成し、libsodium-net (C#) でそれを開こうとします。
SecretBox の作成 (Java)
作成出力
SecretBox を開く (C#)
出力を開く
私が間違っているかもしれないことについて何か考えはありますか?
編集
問題はライブラリの1つにあると思います(libsodium-netが最も可能性が高い)。同じ変数で SecretBox を作成すると、別のボックスが得られます...
TweetNaclFastで秘密箱を作る
戻り値: yDCt/kOLFUWPZpV3deVNUZaH0ZHLVmj9Nvm8QlbVKPe1a/INDw==
libsodium-netで秘密箱を作る
戻り値: AAAAAAAAAAAAAAAAAAAAAMgwrf5DixVFj2aVd3XlTVGWh9GRy1Zo/Tb5vEJW1Sj3tWvyDQ8=
php - PHPで外部通信用の一意の識別子を安全に暗号化または作成しますか?
個人情報と匿名化された情報 (「レポート」) を MySQL データベースに保存する PHP アプリケーションを開発しています。
一人につき複数の「報告書」があり、第三者の登録簿に送られます。
問題は、第三者がこれらのレポートのどれが同一人物のものであるかを知らないことです。そのため、レポートを送信するときに、一意ではあるが追跡不可能な IDをレポートに追加したいと考えています。(第三者が当社内部の人物のIDを知ることはありませんので)
サード パーティは特定の人物について ID で通信する可能性があるため、その ID を暗号化解除して、人物レコードに格納されている ID にする必要があります。(したがって、ハッシュは機能しません)。また、近い将来、より多くの外部関係者が存在することを期待しており、個人ごとに異なる一意の IDを付与したいと考えています。(別の暗号化キーを使用することにより)。
個人の ID を暗号化するためにどのような暗号化方法を使用すれば、常に同じ結果が得られるでしょうか? (たとえば) libsodium extension docsを見ると、個人の ID を暗号化するたびに同じ nonceを使用する必要があると思います 。これは非常に落胆しているようです。
php のopenssl_encryptを介して AES 暗号化を使用すると、同じ問題が発生します。
iv パラメータで空の値が渡されると、E_WARNING レベルのエラーが発生します。
mamp - libsodium を MAMP 環境にインストールする
libsodium をインストールしようとしています (このガイドhttps://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodiumに従ってください)。pecl install libsodium を使用しようとすると、次の結果が得られます。
これが機能しない理由と、それを克服する方法を誰か教えてもらえますか?
c# - Libsodium-net - DLL 'libsodium.dll を読み込めません
NuGet を介して Libsodium-net をインストールし、クラスに Sodium を含めることができましたが、実行しようとすると、
タイプ 'System.DllNotFoundException' の例外が Sodium.dll で発生しましたが、ユーザー コードで処理されませんでした
追加情報: DLL 'libsodium.dll' を読み込めません: 指定されたモジュールが見つかりませんでした。(HRESULT からの例外: 0x8007007E)
gitbooks ドキュメント https://bitbeans.gitbooks.io/libsodium-net/content/password_hashing/index.htmlからサンプル コードを実行しようとしています。
c - バージョン間で互換性があるように libsodium を正しく使用するにはどうすればよいですか?
一連のレコードをファイルに保存することを計画しています。各レコードはlibsodiumで署名されています。ただし、私のプログラムの将来のバージョンで、現在のバージョンが作成した署名をチェックできるようにしたいと考えています。理想的には、その逆も可能です。
Sodium の現在のバージョンでは、署名は Ed25519 アルゴリズムを使用して作成されます。デフォルトのプリミティブは、Sodium の新しいバージョンで変更される可能性があると思います (そうでなければ、libsodium は特定のものを選択する方法を公開しないと思います)。
するべきか...
- 常にデフォルトのプリミティブを使用します (つまり
crypto_sign) - 特定のプリミティブを使用する (つまり
crypto_sign_ed25519) - (1) を実行しますが、値を
sodium_library_version_major()ファイル (専用の「ナトリウム バージョン」フィールドまたは一般的な「ファイル形式リビジョン」フィールドのいずれか) に保存し、現在実行中のバージョンが低い場合は終了します - (3)を行うだけでなく、保存する
crypto_sign_primitive() - (4) だけでなく、ストア
crypto_sign_bytes()とフレンドも行う
...または、まったく別のことを行う必要がありますか?
私のプログラムは C で書かれます。