私はデータ暗号化の初心者です。データ暗号化について調べてみたところ、主に md5 アルゴリズムと SHA アルゴリズムが見つかりました。データ ストレージ/セキュリティに最適なテクノロジはどれですか?その理由は?
2 に答える
MD5 と SHA はハッシュ関数であり、大量のデータからフィンガープリント (固定長表現) を作成します。たとえば、これらは多くのオープンソース製品の iso イメージ ダウンロードの一貫性をチェックする方法として広く使用されていますが、これはそれらを使用して任意のバイトからフィンガープリントを作成できることを意味します。したがって、それらは暗号化されません。
暗号化する場合は、暗号化アルゴリズムを確認する必要があります。対称暗号化アルゴリズム(たとえば、暗号化と復号化のキーが同じであるか、別のキーから簡単に計算できる場合)を探す場合はAES(高度な暗号化標準)が最も実現可能であり、非対称を探す場合はRSA(あなたが持っている場所) 2 つの鍵 - 公開鍵と秘密鍵、および公開鍵から秘密鍵を計算するのは難しい作業です)。
デジタル署名を作成しようとしている場合は、DSA (デジタル署名アルゴリズム) や ECDSA (楕円曲線上の DSA) などを確認することをお勧めします。非対称アルゴリズムは、512、1024、2048 ビットなどのように、精度が拡張された数値で機能することに注意してください。そのような数値を処理できる特別なライブラリが必要です。C++ を使用している場合は、Crypto++ を試すことをお勧めします。他の言語に似たものを見つけてください。
これがお役に立てば幸いです。
データがパスワードであり、それをどこかに保存したい場合は、UseMD5
またはSHA
Hash を使用します。この2つのメリットがあります。
- ハッシュを復号化して古い値を回復することはできないため、パスワードの MD5/SHA ハッシュを誰かに提供したとしても、パスワードが解読されることはありません :)
- 特定の文字列のハッシュは常に同じであるため、ハッシュに基づいてパスワードを比較できます。
AES :
- 対称アルゴリズムが非常に高速
- PKCS5Padding と CBC モードで使用
- 常に IV を保存する
- 対称なので、暗号化されたテキストを復号化するときに同じキーが必要になるため、キーをまったく共有できません。
RSA
- キーを交換するための PKI インフラストラクチャ
- 遅い
DES(Not So Secure)、3DES(Triple DES と呼ばれることが多い - DES に比べて十分に安全ではない) のような他のアルゴリズムもあります。