用C#实现DES和RSA算法对文件加密、和解密
时间: 2024-03-20 08:43:48 浏览: 101
好的,针对您的问题,我可以给您提供一些参考。
DES算法加密和解密示例代码:
```csharp
using System;
using System.IO;
using System.Security.Cryptography;
public class DESExample
{
private static readonly byte[] Key = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
private static readonly byte[] IV = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
public static void EncryptFile(string inputFilePath, string outputFilePath)
{
using var des = new DESCryptoServiceProvider();
using var inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read);
using var outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write);
des.Key = Key;
des.IV = IV;
using var encryptor = des.CreateEncryptor();
using var cryptoStream = new CryptoStream(outputStream, encryptor, CryptoStreamMode.Write);
inputStream.CopyTo(cryptoStream);
cryptoStream.FlushFinalBlock();
}
public static void DecryptFile(string inputFilePath, string outputFilePath)
{
using var des = new DESCryptoServiceProvider();
using var inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read);
using var outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write);
des.Key = Key;
des.IV = IV;
using var decryptor = des.CreateDecryptor();
using var cryptoStream = new CryptoStream(inputStream, decryptor, CryptoStreamMode.Read);
cryptoStream.CopyTo(outputStream);
outputStream.Flush();
}
}
```
RSA算法加密和解密示例代码:
```csharp
using System;
using System.IO;
using System.Security.Cryptography;
public class RSAExample
{
private static readonly string PublicKey = "<RSAKeyValue><Modulus>oKI2Hxg7K5Hd6d8DT7+7p6vqoLJpFwNpkBzv/k4rZKw86hs2Gx9zTt2+JzLJ3VYsZq8YfK0V0d85t2c+Jq3D7BjnsiP9i4j6kOaRc7v7GKv4rRAc7S6t7WhrFVg+KQ9dZ5iM6NhrX7oOqB5hLb7p9eN+5VB9X4IWFSz+Q3YE=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
private static readonly string PrivateKey = "<RSAKeyValue><Modulus>oKI2Hxg7K5Hd6d8DT7+7p6vqoLJpFwNpkBzv/k4rZKw86hs2Gx9zTt2+JzLJ3VYsZq8YfK0V0d85t2c+Jq3D7BjnsiP9i4j6kOaRc7v7GKv4rRAc7S6t7WhrFVg+KQ9dZ5iM6NhrX7oOqB5hLb7p9eN+5VB9X4IWFSz+Q3YE=</Modulus><Exponent>AQAB</Exponent><P>6DdR7M/CuFjyF3v6MfTnW8MhFwM8Wt4GpBZG9e+y5L8=</P><Q>6J3f2gPQy7E1k1PbR+0WwC5yZPQ/N4WZ4GQvyXq1r5I=</Q><DP>bqbN+qWZJ+Oul9F73BvKm4JNm91qMpbkzqx4WovhD9k=</DP><DQ>Y7e4CKD+5pwu7e4oCzIYs0E3LlUWJf4LkLwN+3Q6w6U=</DQ><InverseQ>g4TlKvQf7r6jVQK2lRrV4Zar0hN6I4oWU1Lm9p1zvAo=</InverseQ><D>aeHvIhO4+Yk7bW+4qo7w5yJjWjyWz3mVW5l1mLb0h8JtPZV12qY8jMHZ0cNzUJ7a1Z1IjWkN73uU+qT0O4O5ZQK0ZyO0zj8FIAJn5wJj7rP8Lw5Ll5Qk7K1jy6h0J0O3mY9Hf6Lg2X4L2u6G4LrD5kiJ8Y2nWZL3V7E0e6YB0=</D></RSAKeyValue>";
public static void EncryptFile(string inputFilePath, string outputFilePath)
{
using var rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(PublicKey);
using var inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read);
using var outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write);
using var encryptor = rsa.CreateEncryptor();
using var cryptoStream = new CryptoStream(outputStream, encryptor, CryptoStreamMode.Write);
inputStream.CopyTo(cryptoStream);
cryptoStream.FlushFinalBlock();
}
public static void DecryptFile(string inputFilePath, string outputFilePath)
{
using var rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(PrivateKey);
using var inputStream = new FileStream(inputFilePath, FileMode.Open, FileAccess.Read);
using var outputStream = new FileStream(outputFilePath, FileMode.Create, FileAccess.Write);
using var decryptor = rsa.CreateDecryptor();
using var cryptoStream = new CryptoStream(inputStream, decryptor, CryptoStreamMode.Read);
cryptoStream.CopyTo(outputStream);
outputStream.Flush();
}
}
```
以上代码仅供参考,具体实现需要根据您的需求进行调整。
阅读全文