1. 生成 RSA 密钥对
using System.Security.Cryptography;

// 生成 2048 位的 RSA 密钥对
using var rsa = new RSACryptoServiceProvider(2048);

// 获取公钥和私钥
byte[] publicKey = rsa.ExportRSAPublicKey();
byte[] privateKey = rsa.ExportRSAPrivateKey();
  1. 加密文件
using System.IO;

// 加载待加密的文件
byte[] data = File.ReadAllBytes("path/to/file");

// 分块加密
int blockSize = rsa.KeySize / 8 - 11; // 每块的大小
using var outputStream = new MemoryStream();
using var inputStream = new MemoryStream(data);
byte[] buffer = new byte[blockSize];
int bytesRead;
while ((bytesRead = inputStream.Read(buffer, 0, blockSize)) > 0)
{
    byte[] encryptedData = rsa.Encrypt(buffer, false);
    outputStream.Write(encryptedData, 0, encryptedData.Length);
}
byte[] encrypted = outputStream.ToArray();
  1. 解密文件
// 分块解密
blockSize = rsa.KeySize / 8; // 每块的大小
using var outputStream = new MemoryStream();
using var inputStream = new MemoryStream(encrypted);
buffer = new byte[blockSize];
while ((bytesRead = inputStream.Read(buffer, 0, blockSize)) > 0)
{
    byte[] decryptedData = rsa.Decrypt(buffer, false);
    outputStream.Write(decryptedData, 0, decryptedData.Length);
}
byte[] decrypted = outputStream.ToArray();
  1. 保存加密后的文件
File.WriteAllBytes("path/to/encrypted_file", encrypted);

注意:RSA 加密算法只适合加密较小的数据,因为每次加密后的密文长度不能超过密钥长度减去 11 字节。如果需要加密大文件,则需要使用分块加密的方式。

使用 NET 创建一个 RSA 加密大文件的方式

原文地址: https://www.cveoy.top/t/topic/bJaO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录