C# 是否有一个“问题”;单行“;生成加密字符串的方法?

C# 是否有一个“问题”;单行“;生成加密字符串的方法?,c#,asp.net,security,encryption,C#,Asp.net,Security,Encryption,我想生成一个链接 http://site/?code=xxxxxxxxxx 其中xxxxxxxxx是从字符串user01生成的加密字符串。我以后需要把它转换回来 有没有一种简单的方法可以对这样的字符串进行加密和解密?您需要做的是查看名称空间 编辑: 在一行代码中?好: class Program { static void Main(string[] args) { Console.WriteLine(Decrypt(Encrypt("This is a sam

我想生成一个链接

http://site/?code=xxxxxxxxxx
其中
xxxxxxxxx
是从字符串
user01
生成的加密字符串。我以后需要把它转换回来


有没有一种简单的方法可以对这样的字符串进行加密和解密?

您需要做的是查看名称空间

编辑:
在一行代码中?好:

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Decrypt(Encrypt("This is a sample", "thisismypassword"), "thisismypassword"));
    }

    public static string Encrypt(string plaintext, string password)
    {
        return Convert.ToBase64String((new AesManaged { Key = Encoding.UTF8.GetBytes(password), Mode = CipherMode.ECB  }).CreateEncryptor().TransformFinalBlock(Encoding.UTF8.GetBytes(plaintext), 0, Encoding.UTF8.GetBytes(plaintext).Length));
    }

    public static string Decrypt(string ciphertext, string password)
    {
        return Encoding.UTF8.GetString((new AesManaged { Key = Encoding.UTF8.GetBytes(password), Mode = CipherMode.ECB }).CreateDecryptor().TransformFinalBlock(Convert.FromBase64String(ciphertext), 0, Convert.FromBase64String(ciphertext).Length));
    }
}
  • ROT13
  • ROT26
  • 颠倒字符的顺序
  • 应用程序/x-www-form-urlencoded
  • 编码十六进制(aes_256(密钥,已知的四进制,到八进制(值)))
  • 将字符串和随机生成的查找键存储在持久性字典中(如包含列string和lookup\u key的数据库表)

您可以尝试使用此方法转换字符串。它将转换为
Base64
,然后转换为十六进制,允许您添加URL

var inputString = "xxxxx";
var code = Convert.ToBase64String((new ASCIIEncoding()).GetBytes(inputString)).ToCharArray().Select(x => String.Format("{0:X}", (int)x)).Aggregate(new StringBuilder(), (x, y) => x.Append(y)).ToString();
这将返回字符串,从十六进制到
Base64
,从
Base64
到原始字符串

var back = (new ASCIIEncoding()).GetString(Convert.FromBase64String(Enumerable.Range(0, code.Length / 2).Select(i => code.Substring(i * 2, 2)).Select(x => (char)Convert.ToInt32(x, 16)).Aggregate(new StringBuilder(), (x, y) => x.Append(y)).ToString()));

你所说的编码/加密是什么意思?您希望它有多安全?是的,有几种“简单”的方法,但到目前为止您尝试了什么?你的想法是什么?主要是目前的问题是什么?@Paul:这并不重要。“猜”代码有点难。@Sani:我什么都没试过,因为我没有简单的方法。如果我找不到一个简单的解决方案,我就使用base64并转换成十六进制。@BrunoML:如果你真正需要的只是一个“难以猜测”的值,那么base64编码就足够了。你面临的问题可能是两件事之一。这要么在WebForms中,要么在WinForms中。在WebForms中,以安全的方式向用户隐藏内容比在WinForms中更容易。(好吧,至少是新手用户)。大多数生成的字节数组转换成字符串,放在url中看起来不太好看。我找不到一个简单的方法来实现它。只需将数组字节转换为Base64。这是通常的做法。这是一行代码。似乎没有更简单的方法。如果我找不到别的办法,我会这么做的。谢谢你发帖!这不是加密!误用、绕过或检索原始数据是微不足道的。