椭圆加密C#实现

使用方法:

调用 Encrypt 方法将明文加密为密文。例如: string ciphertext = EllipseEncryption.Encrypt("hello world");。
调用 Decrypt 方法将密文解密为明文。例如: string plaintext = EllipseEncryption.Decrypt(ciphertext);。

using System; // 引入System命名空间,包含基础类库  
using System.Security.Cryptography; // 引入System.Security.Cryptography命名空间,包含加密解密类库  
using System.Text; // 引入System.Text命名空间,包含字符串处理类库  
  
public class EllipseEncryption // 定义一个名为EllipseEncryption的公共类  
{  
    private static readonly byte[] Key = Encoding.ASCII.GetBytes("mysecretkey"); // 定义一个私有的静态只读字节数组Key,并赋初值为"mysecretkey"的ASCII编码  
    // 这里的Key用于加密和解密过程中作为对称密钥使用  
  
    private static readonly byte[] IV = Encoding.ASCII.GetBytes("1234567890123456"); // 定义一个私有的静态只读字节数组IV,并赋初值为"1234567890123456"的ASCII编码  
    // 这里的IV用于加密和解密过程中作为初始向量使用,在AES加密中,IV需要固定且每批次不同  
  
    public static string Encrypt(string plaintext) // 定义一个公共的静态方法Encrypt,接收一个字符串参数plaintext,返回一个字符串结果  
    {  
        byte[] plaintextBytes = Encoding.ASCII.GetBytes(plaintext); // 将输入的明文字符串转换为ASCII编码的字节数组  
        // 这里将字符串转换为字节数组,是为了后续的加密操作  
  
        using (Aes aes = Aes.Create()) // 使用Aes类创建一个AES对象,并自动处理其Dispose操作  
        {  
            aes.Key = Key; // 设置AES对象的密钥为之前定义的Key  
            aes.IV = IV; // 设置AES对象的初始向量为之前定义的IV  
            // 这里设置AES对象的关键参数,用于后续的加密和解密操作  
  
            ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV); // 创建一个用于加密的ICryptoTransform对象,并自动处理其Dispose操作  
            // 这里使用AES对象创建了一个用于加密的对象,该对象将使用之前设置的密钥和初始向量进行加密操作  
  
            using (MemoryStream msEncrypt = new MemoryStream()) // 创建一个MemoryStream对象msEncrypt,用于存储加密结果  
            {  
                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)) // 创建一个CryptoStream对象csEncrypt,用于将加密数据写入到msEncrypt中  
                {  
                    using (StreamWriter swEncrypt = new StreamWriter(csEncrypt)) // 创建一个StreamWriter对象swEncrypt,用于将数据写入到csEncrypt中  
                    {  
                        swEncrypt.Write(plaintext); // 将明文数据写入到swEncrypt中,即进行加密操作  
                    }  
                    return Convert.ToBase64String(msEncrypt.ToArray()); // 将加密结果从字节数组转换为Base64字符串,并返回结果  
                }  
            }  
        }  
    }  
  
    public static string Decrypt(string ciphertext) // 定义一个公共的静态方法Decrypt,接收一个字符串参数ciphertext,返回一个字符串结果  
    {  
        byte[] ciphertextBytes = Convert.FromBase64String(ciphertext); // 将输入的密文字符串转换为字节数组  
        // 这里将字符串转换为字节数组,是为了后续的解密操作,因为加密后的结果是字节数组形式存储的  
  
        using (Aes aes = Aes.Create()) // 使用Aes类创建一个AES对象,并自动处理其Dispose操作  
        {  
            aes.Key = Key; // 设置AES对象的密钥为之前定义的Key  
            aes.IV = IV; // 设置AES对象的初始向量为之前定义的IV  
            // 这里设置AES对象的关键参数,用于后续的解密操作,与加密操作的参数相同  
  
            ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV); // 创建一个用于解密的ICryptoTransform对象,并自动处理其Dispose操作  
            // 这里使用AES对象创建了一个用于解密的对象,该对象将使用之前设置的密钥和初始向量进行解密操作  
  
            using (MemoryStream msDecrypt = new MemoryStream(ciphertextBytes)) // 创建一个MemoryStream对象msDecrypt,用于读取加密数据到字节数组中  
            {  
                using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)) // 创建一个CryptoStream对象csDecrypt,用于读取msDecrypt中的数据并解密到csDecrypt中  
                {  
                    using (StreamReader srDecrypt = new StreamReader(csDecrypt))  
                    {  
                        return srDecrypt.ReadToEnd();  
                    }  
                }  
            }  
        }  
    }  
}

特此记录

anlog

2023年11月13日

你可能感兴趣的:(笔记,开发语言,C#,椭圆加密)