代码之家  ›  专栏  ›  技术社区  ›  BrunoLM

有没有“单行”方法来生成加密字符串?

  •  3
  • BrunoLM  · 技术社区  · 14 年前

    我想生成一个链接

    http://site/?code=xxxxxxxxxx
    

    xxxxxxxxxx 是从字符串生成的加密字符串 user01 . 我以后要把它换回来。

    3 回复  |  直到 14 年前
        1
  •  5
  •   Gadonski    14 年前

    您可以尝试转换字符串。它将转换为 Base64 然后十六进制允许你输入网址。

    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();
    

    基数64 基数64

    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()));
    
        2
  •  9
  •   Sani Huttunen    10 年前

    你需要做的是调查 System.Security.Cryptography

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

    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));
        }
    }
    
        3
  •  2
  •   yfeldblum    14 年前
    • 旋转26
    • 颠倒字符顺序
    • 应用程序/x-www-form-urlencoded
    • 将字符串和随机生成的查找键存储在永久字典中(如具有列string和查找键的数据库表)
    推荐文章