問題タブ [rijndael]
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.
c# - ファイルの暗号化に使用されるキーを保存する方法
私はファイルを「クラウド」にバックアップするアプリで遊んでいます:)そしてファイルを保存する前にファイルを暗号化したいです。その部分については説明しましたが、このアプリはフォルダーの変更を監視し、変更されたファイルをアップロードするため、ファイルの暗号化に使用するキーを保存する必要があります。ユーザーがパスワードを入力し、キーが生成されるという考え方です。
現在、暗号化を行うために.NETFrameworkを使用しています。RijndaelManagedクラスを使用して暗号化/復号化し、PasswordDeriveBytesクラスを使用してキーを取得しています。
しかし、ファイルの暗号化に使用されるキーをどのように保持する必要がありますか?また、プログラムをWindowsで開始し、ユーザーにパスワードを再度入力させる必要がないようにします。
php - 暗号化キーをphpコードファイルに安全に保存する方法
ユーザーが機密データを送信するWebサイトがあり、phpスクリプトがrijndael 256を使用してこれらの機密データを暗号化し、mysqlデータベースに保存します
問題は、phpスクリプトのみがアクセスでき、他のスクリプトからは見えない安全な場所にキーを保存したいということです
c# - この C# Rijndael 暗号化を PHP に変換するにはどうすればよいですか?
SOについては、すでにいくつかの役立つ質問があります。
しかし、私はまだ私の特定のケースで問題を抱えています。
さまざまな方法を試しましたが"The IV parameter must be as long as the blocksize"
、結果のハッシュと一致しないエラーまたはテキストが表示されます。
私が間違っていることを解決するのに十分なほど暗号化を理解していません。
phpのバージョンは次のとおりです。
そしてC#バージョン:
既存の C# アプリケーションと同じ MySQL データベースと通信する新しい php ベースのアプリケーションでユーザー ログインを検証できるようにしたいと考えています。パスワードを暗号化し、結果のハッシュをデータベースに保存されているものと比較して認証するつもりです。
どんなポインタでも大歓迎です。
編集:
C# 関数では、 が呼び出され、引数としてバイト配列が渡されていることに気付きましたが、PasswordDeriveBytes
これは PHP バージョンには類似していません。これはCodeproject の例に由来するものであり、ASCII のバイト配列は「Ivan Medvedev」を綴り、例の作者であると想定しています。残念ながら、これを変更することはできません。
.net - RijndaelManaged Cryptostreamは、ファイルをディスクからメモリに復号化します
しばらく前に書いたライブラリがあり、以下のクラスコードと同じロジックを使用していますが、ファイルを復号化すると、ディスク上で復号化され、暗号化されたバージョンを削除するかどうかを選択できます。ファイルをメモリに復号化するオプションを追加して、ファイルをbyte()としてキャプチャし、バイトをサービスに送信できるようにしようとしています。私は明らかにファイルをディスクに復号化し、ファイルストリームを読み取り、byte()に変換し、復号化されたバージョンを削除することができます(ディスク上のファイルを暗号化しておく必要があるため)...削除するファイルを何度も作成します、とりわけディスクの断片化を引き起こす可能性があるので、ファイルをメモリに復号化したいと思います。とにかく、これはファイルをメモリストリーム変数に正常に復号化しますが、ファイルビューアにバイトをダムすると、ファイル形式が認識されないことを通知します。
これが私がこれまでに持っているコードです:
アップデート:
cryptostream.FlushFinalBlock()を追加しました
これはまだ機能していません...ストリームを最後まで読んでいないように感じます。
アップデート:
これが私の「暗号化」メソッドで、復号化と同じIVメソッドとキーメソッドを使用しています...
最終更新:
成功したメモリコードへのファイルの復号化は次のとおりです。
c# - ここc#で暗号化メソッドの復号化メソッドをコーディングする方法
以下のような暗号化サンプルをまとめることができましたが、復号化中に無効なデータ(例外)が発生します。どのように復号化する必要がありますか
暗号化方式
復号化方法
問題は、これらのメソッド内で行われているすべてのエンコーディングにあると思います
サンプルデータ
plainText = stackoverflow
base64encoded Key = B8Y/6doxwqU870C6jzYWhsr3hKSLokAOkkLCDiy+TS4=
(バイトに変換するのは簡単なはずですよね)
base64encoded IV = NZIpD60eBmdsOFFhA2bfvw==
encryptedValue = 77+977+977+977+977+9Ce+/ve+/vQ3vv70F77+9UzHvv73vv70=
Stackoverflowに復号化するために同じ暗号化された値、IV、およびキーを提供します
c# - RijndaelManaged 暗号化での一貫性のない動作
RijndaelManaged で奇妙な問題が発生しています。基本的に、CipherMode、Padding、IV、および Key を設定する新しいインスタンスがあります。次に、別のインスタンスを作成し、次のプロパティの同じ値を元のインスタンスから 2 番目のインスタンスに割り当てます: Mode、Padding、KeySize、FeedbackSize、BlockSize、IV、および Key。
インスタンス 1 からインスタンス 2 にすべてのプロパティ値をコピーすると、同じ結果が得られるはずですよね? 違う!両方のインスタンスの GetHashCode() は何らかの形で異なりますが、それらのプロパティ (上記の名前) をダンプすると、それらはすべて同じになります。
ブロック サイズ (16 バイト、128 ビット) に等しい長さのテキストの文字列を暗号化すると、どちらも同じ結果になります。入力が BlockSize より小さい場合、暗号化の結果は同じではありません。
最初の Rijndael インスタンスを作成するためにこれを持っています。
例のために文字列を暗号化するには:
それで、これをしてください
私は cyper1 == cypher2 と cypher11 != cypher21 も rm1.GetHashCode() != rm2.GetHashCode() を取得していますが、すべてのパブリックパラメーターは同じです!
また、両方のインスタンスのすべてのパブリック プロパティをダンプして、何か不足していないかどうかを確認しましたが、すべての値は同じです。
php - Delphi DEC ライブラリ(Rijndael)の暗号化
DEC 3.0 ライブラリ( Delphi Encryption Compedium Part I ) を使用して Delphi 7 でデータを暗号化し、POST を介して PHP スクリプトに送信しようとしています。そこでmcrypt (RIJNDAEL_256、ECB モード) で復号化しています。
Delphi の部分:
PHP 部分:
問題は、PHP からの復号化が機能せず、出力が意味不明で実際のデータとは異なることです。
もちろん、DelphiKey
と PHP$Key
は同じ 24 文字の文字列です。
今では、DEC 3.0 が古くて時代遅れであることを知っています。私は暗号化の専門家ではないので、実装が実際に Rijndael 256 であるかどうかはわかりません。おそらく誰かが、この実装が RIJNDAEL_256 を使用した PHP の mcrypt とどのように異なるかを教えてくれます。キーサイズまたはブロックサイズが異なる可能性がありますが、コードからはわかりません。Cipher1.pas からの抜粋を次に示します。
副次的な質問:
私は ECB モードが推奨されていないことを知っており、ECB が機能するようになったらすぐに CBC を使用します。問題は、Delphi で生成された IV を PHP スクリプトにも送信する必要があるかどうかです。または、ECB のように、キーを知っていれば十分ですか?
vb.net - VB.NET Rijndael Managed Encryption (AES) はどのくらい安全ですか?
このコードのわずかに変更されたバージョンを使用しています。ミッション クリティカルなアプリケーションを作成します。暗号化されるファイルは非常に重要です。これと一緒にやらなければならないことがいくつかあるので、これは最初からやらなければなりません。
これはどのくらい安全ですか?この暗号を解読するのは不可能ですよね?
非常に申し訳ありませんが、ここに作業リンクがあります。http://www.codeproject.com/Articles/12092/Encrypt-Decrypt-Files-in-VB-NET-Using-Rijndael
暗号化と復号化
そこからここまで主なコードを貼り付けました。
c# - Rijndael のパディングまたは長さが無効です
Rijndael または Aes と以下のコードを使用して文字列を暗号化/復号化しようとしています。
//編集: 以下の Xint0 の回答に従って、Unicode 呼び出しを Convert.ToBase64String に変更しました。
Decrypt メソッドの cs.Write で、「パディングが無効であり、削除できません」というエラーが表示されます。
パディングを PaddingMode.None に設定しようとしましたが、「暗号化するデータの長さが無効です」というメッセージが表示されます。Encrypt メソッドの cs.Write で。
私はこれらを見てきましたが、彼らが言ったことは何もうまくいかないようです.
スタック トレースは、System.Security.CryptographicException が RijndaelManagedTransform.DecryptData(Byte[] inputBuffer, Int32 inputOffset, Int32 inputCount, Byte[]& outputBuffer, Int32 outputOffset, PaddingMode paddingMode, Boolean fLast) から来ていることを示しています。
php - PHPのようなRijndael256ビット暗号化を行うJavaScriptライブラリはありますか?
PHPでRijndael256ビット暗号化をAPIに幅広く使用しており、JavaScriptで記述されたAPIラッパーにも使用したいのですが、PHPと同じ結果が得られるソリューションを見つけることができませんでした。 。
PHPとは、次のことを意味します。
と
..および復号化バリアント。
多くの256ビットAESライブラリは、PHPがRijndael 256ビット暗号化で行うのと同じ結果を得られないことを知っています。したがって、上記の例でPHPが行うことを実行できるライブラリがあるかどうか疑問に思います。
ありがとう!