暗号出力は常に異なるものと同一キー
-
02-07-2019 - |
質問
監督-選手コメン店のパスワードファイルおきたいと思いますを取得す。ハッシュなオプションとしてさんありがとうございます。パスワードを接続するためのリモートサーバーです。
次のコードの作品でもあるというように異なる出力されるもののキーは同じです。これは悪いと願した場合にシャットダウンすると再起んですが、できるメールアドレスのフォーマットです。たいのですが店内パスワードファイルを取得します。
public class EncyptDecrypt {
static System.Security.Cryptography.TripleDESCryptoServiceProvider keyProv = new System.Security.Cryptography.TripleDESCryptoServiceProvider();
public static System.Security.Cryptography.TripleDESCryptoServiceProvider KeyProvider {
get {
keyProv.Key = new byte[] { /* redacted with prejudice */ };
return keyProv;
}
}
public static string Encrypt(string text, SymmetricAlgorithm key) {
if (text.Equals(string.Empty)) return text;
// Create a memory stream.
MemoryStream ms = new MemoryStream();
// Create a CryptoStream using the memory stream and the
// CSP DES key.
CryptoStream encStream = new CryptoStream(ms, key.CreateEncryptor(), CryptoStreamMode.Write);
// Create a StreamWriter to write a string
// to the stream.
StreamWriter sw = new StreamWriter(encStream);
// Write the plaintext to the stream.
sw.WriteLine(text);
// Close the StreamWriter and CryptoStream.
sw.Close();
encStream.Close();
// Get an array of bytes that represents
// the memory stream.
byte[] buffer = ms.ToArray();
// Close the memory stream.
ms.Close();
// Return the encrypted byte array.
return System.Convert.ToBase64String(buffer);
}
// Decrypt the byte array.
public static string Decrypt(string cypherText, SymmetricAlgorithm key) {
if (cypherText.Equals(string.Empty)) return cypherText;
string val;
try {
// Create a memory stream to the passed buffer.
MemoryStream ms = new MemoryStream(System.Convert.FromBase64String(cypherText));
// Create a CryptoStream using the memory stream and the
// CSP DES key.
CryptoStream encStream = new CryptoStream(ms, key.CreateDecryptor(), CryptoStreamMode.Read);
// Create a StreamReader for reading the stream.
StreamReader sr = new StreamReader(encStream);
// Read the stream as a string.
val = sr.ReadLine();
// Close the streams.
sr.Close();
encStream.Close();
ms.Close();
}
catch (System.Exception) {
return string.Empty;
}
return val;
}
}
解決
このことは、暗号プロバイダにはランダムに生成。を指定することではないが異なります。
編集:これまでにお'keyProvider'設定の物件です。
他のヒント
別のドキュメントのCreateEncryptor:
現在のIVプロパティはnull 参照(何もしていないVisual Basic), のGenerateIVソッドが呼び出され、 新しいランダムIV.
この暗号文毎に異なる。
注意:ることを検討し こちらの があることができ誤動作防止)の平文とmac...そして第のブロックの暗号文が効果的にIVがで繰り返し
を指定する必要があります。IV(初期化ベクトル)場合でも、ランダムに生成します。ご利用の場合ランダムIVのお店で、暗号文利用できその後、復号化、統IVからその他のデータ(例えばれば暗号化パスワードできるのIVからのユーザ名).
所属していません StackOverflow