用C#来进行实现
时间: 2023-07-12 14:10:33 浏览: 39
以下是使用C#实现字符串加解密可逆算法的示例代码:
```csharp
using System;
using System.Text;
class Program
{
static void Main(string[] args)
{
string plaintext = "hello world";
string key = "secret";
// 加密
string ciphertext = Encrypt(plaintext, key);
// 输出密文
Console.WriteLine(ciphertext);
// 解密
string decryptedText = Decrypt(ciphertext, key);
// 输出解密后的明文
Console.WriteLine(decryptedText);
}
// 加密方法
static string Encrypt(string plaintext, string key)
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i < plaintext.Length; i++)
{
int ascii = (int)plaintext[i];
int keyAscii = (int)key[i % key.Length];
int result = ascii ^ keyAscii;
sb.Append(result.ToString("X2"));
}
return sb.ToString();
}
// 解密方法
static string Decrypt(string ciphertext, string key)
{
StringBuilder sb = new StringBuilder();
for(int i = 0; i < ciphertext.Length; i += 2)
{
string hex = ciphertext.Substring(i, 2);
int result = Convert.ToInt32(hex, 16);
int keyAscii = (int)key[(i / 2) % key.Length];
int ascii = result ^ keyAscii;
sb.Append((char)ascii);
}
return sb.ToString();
}
}
```
在上面的示例代码中,我们定义了`Encrypt`方法和`Decrypt`方法来分别进行加密和解密操作。加密过程中,我们使用`StringBuilder`来逐个字符处理,然后将异或运算后的结果转换为十六进制字符串。解密过程中,我们先将密文字符串的每两个字符转换为十六进制数,然后进行异或运算,最后将结果转换为ASCII码字符。