ストリームを使用せずにbytearrayを暗号化する方法はありますか?.NET暗号化bytearray
1
A
答えて
5
ディスクI/Oが懸念される場合は、MemoryStreamを使用できます。
ただし、RSACryptoServiceProviderクラスはバイト配列で動作します。このクラスは、RSAアルゴリズムの実装を使用して非対称暗号化と復号化を実行します。
例hereあなたはバイト配列
2
さて、あなたは独自の暗号化アルゴリズムを書くことができます - しかし、それだけで組み込みのストリーミングAPIあなたがToArray
を使用してバイト配列に変換MemoryStream
への書き込みを使用する方がはるかに簡単です。
-1
ブロックサイファーを使用し、それを自分で実装すると、これを行うことができます方法を示しています。
バイト配列のMemoryStreamを使用するとうまく動作し、十分にテストされた実装が使用されるため、これはほとんど無意味です。
暗号化について話しているときに何かを実装すると、は通常という悪い考えです。
0
MicrosoftのエンタープライズライブラリのCryptography Application Blockを使用すると、これを行うことができますが、実際にはストリームを使用しないことによるメリットはありません。
0
14
は、実際には、あなたはバイトで動作するすべての任意のストリームを使用する必要はありません。あなたが必要 唯一のものは、SymmetricAlgorithmクラス
public class CryptoProvider
{
private SymmetricAlgorithm _algorithm = new RijndaelManaged();
public byte[] EncryptData(byte[] data, string password)
{
GetKey(password);
ICryptoTransform encryptor = _algorithm.CreateEncryptor();
byte[] cryptoData = encryptor.TransformFinalBlock(data, 0, data.Length);
return cryptoData;
}
public byte[] DecryptData(byte[] cryptoData, string password)
{
GetKey(password);
ICryptoTransform decryptor = _algorithm.CreateDecryptor();
byte[] data = decryptor.TransformFinalBlock(cryptoData, 0, cryptoData.Length);
return data;
}
private void GetKey(string password)
{
byte[] salt = new byte[8];
byte[] passwordBytes = Encoding.ASCII.GetBytes(password);
int length = Math.Min(passwordBytes.Length, salt.Length);
for (int i = 0; i < length; i++)
salt[i] = passwordBytes[i];
Rfc2898DeriveBytes key = new Rfc2898DeriveBytes(password, salt);
_algorithm.Key = key.GetBytes(_algorithm.KeySize/8);
_algorithm.IV = key.GetBytes(_algorithm.BlockSize/8);
}
}
由来の任意のアルゴリズムの暗号化や復号化することができICryptoTransformのTransformFinalBlock()メソッドを呼び出すことです
関連する問題
- 1. .Net暗号化
- 2. .NetのAES + HMAC暗号化
- 3. .NETでのマルチパーティ暗号化?
- 4. .NetシンプルなRSA暗号化
- 5. AES暗号化.NetとJs
- 6. .NETとJava間の対称暗号化
- 7. Rfc2898DeriveBytes for this .Net codeパスワード暗号化
- 8. 暗号化.netアセンブリ/アンチ・デバッグ・テクニック
- 9. WCF(Param暗号化と.NET 1.1クライアント)
- 10. .NET RSA暗号化:最小のキーサイズ?
- 11. 3.5 .NET Frameworkの暗号化問題
- 12. 高速軽量.NETクライアント暗号化 - >サーバー復号化
- 13. シーケンシャル.NET DESCryptoServiceProviderの暗号化と復号化は、第96
- 14. 大きなファイルの暗号化/復号化(.NET)
- 15. iOSとAndroidでのAES暗号化、C#.NETでの復号化
- 16. モバイルと.net webservicesでの暗号化と復号化
- 17. シーザー暗号暗号化Python
- 18. 良い暗号化/暗号化の本
- 19. OpenAM:RESTFUL API - 暗号化/暗号化パスワード
- 20. RSA暗号化/復号化
- 21. 暗号化と復号化
- 22. AES暗号化/復号化
- 23. 暗号化/復号化soll
- 24. 復号化、暗号化
- 25. カスタム暗号化暗号化/復号化ストリーム
- 26. 暗号アクセラレータと.NET
- 27. 暗号ブロックチェーンの復号XOR「暗号化」
- 28. ユーザパスワードを暗号化する2ウェイ暗号化のハンドル/ストア暗号化キー
- 29. .netからSQL Server暗号化データを復号する
- 30. Javaから.NetへのDES暗号化データの復号