Bru*_*oLM 3 c# asp.net security encryption
我想生成一个链接
http://site/?code=xxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
从xxxxxxxxxx字符串生成的加密字符串在哪里user01.我需要稍后将其转换回来.
有没有一种简单的方法来加密和解密这样的字符串?
您需要做的是查看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));
}
}
Run Code Online (Sandbox Code Playgroud)
你可以尝试这个来转换你的字符串.它将转换为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();
Run Code Online (Sandbox Code Playgroud)
这得到字符串返回,从十六进制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()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1352 次 |
| 最近记录: |