https://blog.youkuaiyun.com/qq_32688731/article/details/80657826
tips:c# 使用aes加密的话,密钥格式utf-8的是纯字母,不要用带数字。
前端后端调通即可
DES3加密代码:
using System;
using System.Security.Cryptography;
using System.Text;
public static class DES3Helper
{
private static readonly byte[] Key = Encoding.UTF8.GetBytes("my3deskey123456789012345"); // 密钥,必须为 24 字节
private static readonly byte[] IV = Encoding.UTF8.GetBytes("my3desiv"); // 向量,必须为 8 字节
// 加密字符串
public static string Encrypt(string text)
{
byte[] inputBytes = Encoding.UTF8.GetBytes(text);
using (var des3 = new TripleDESCryptoServiceProvider())
{
des3.Key = Key;
des3.IV = IV;
des3.Mode = CipherMode.CBC;
des3.Padding = PaddingMode.PKCS7;
using (var ms = new System.IO.MemoryStream())
using (var cs = new CryptoStream(ms, des3.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(inputBytes, 0, inputBytes.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
}
}
// 解密字符串
public static string Decrypt(string text)
{
byte[] inputBytes = Convert.FromBase64String(text);
using (var des3 = new TripleDESCryptoServiceProvider())
{
des3.Key = Key;
des3.IV = IV;
des3.Mode = CipherMode.CBC;
des3.Padding = PaddingMode.PKCS7;
using (var ms = new System.IO.MemoryStream())
using (var cs = new CryptoStream(ms, des3.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(inputBytes, 0, inputBytes.Length);
cs.FlushFinalBlock();
return Encoding.UTF8.GetString(ms.ToArray());
}
}
}
}
RSA加密: tips:一定要先生成一套公私钥
1,生成成对秘钥:
using System.Security.Cryptography;
using System.Text;
public static class RSAKeyGenerator
{
// 生成新的公钥和私钥
public static void GenerateKeys(out string publicKey, out string privateKey)
{
using (var rsa = new RSACryptoServiceProvider(2048))//默认长度2048
{
publicKey = rsa.ToXmlString(false);
privateKey = rsa.ToXmlString(true);
}
}
}
2.加解密代码示例
using System;
using System.Security.Cryptography;
using System.Text;
public static class RSAHelper
{
private static readonly string publicKey = "<RSAKeyValue><Modulus>obYsXqRZK3uTK+4cWsd+3x3N6MkD+JZDm/7b1ts7F6zPdN8v0Mjv2Vf9kP6VdQh+0aMmOeYxgWizTl2xZ5LrI0VqJjJxqB6LqL1lmRbhW4tYk6YcSxZzG7UZ++JkC9yU0qXO6Y1a4RQ6K8lL0a4z1iHsn1QX8orJ5qK3wK8=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
private static readonly string privateKey = "<RSAKeyValue><Modulus>obYsXqRZK3uTK+4cWsd+3x3N6MkD+JZDm/7b1ts7F6zPdN8v0Mjv2Vf9kP6VdQh+0aMmOeYxgWizTl2xZ5LrI0VqJjJxqB6LqL1lmRbhW4tYk6YcSxZzG7UZ++JkC9yU0qXO6Y1a4RQ6K8lL0a4z1iHsn1QX8orJ5qK3wK8=</Modulus><Exponent>AQAB</Exponent><P>2J8U2bJ9xJvzNnYj8HxJUeQ5qHQJwS4TjJwKx6y2BzE=</P><Q>1qPj8U3jxu0Qzjz6JZ3T1c/WTzGQwXo8BjvVZ7nK5+4=</Q><DP>EC2LqkXQVvUf2VJ4bTpvvL9EUtRQg7K9X9c8EEg6WwE=</DP><DQ>WJF3w5D/YR6rNUEv5Ve8sO1eI2HcZbVtC0K3M8T3Jp0=</DQ><InverseQ>x5JVzT6wOgzrW1vzK1mXUwT6JzN1BjH+yrjikp/OXBA=</InverseQ><D>Ns7l7wT5Q2bFzQrF+8mWMkfUH5ZPmG0K8Qcgz9qQ8YhjxTKJf0Qd+Yl8cZ3j5Wc0cFqZpPd9r7gU5M3XjXQ9r1z3qDv0Qd3WI1Nv2pZJ1R0k1jL2VJnrl0NkSiovLXOv5lZNCZ2RqVhXZqgNf0A/1xJ1YBfzL3e6p6cGp8fV5k=</D></RSAKeyValue>";
private static readonly RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider();
// 加密字符串
public static string Encrypt(string text)
{
cryptoServiceProvider.FromXmlString(publicKey);
byte[] inputBytes = Encoding.UTF8.GetBytes(text);
byte[] encryptedBytes = cryptoServiceProvider.Encrypt(inputBytes, false);
return Convert.ToBase64String(encryptedBytes);
}
// 解密字符串
public static string Decrypt(string text)
{
cryptoServiceProvider.FromXmlString(privateKey);
byte[] inputBytes = Convert.FromBase64String(text);
byte[] decryptedBytes = cryptoServiceProvider.Decrypt(inputBytes, false);
return Encoding.UTF8.GetString(decryptedBytes);
}
}
3,SHA加密
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
public class SHAHelper
{
public static string SHAmd5Encrypt(string normalTxt)
{
var bytes = Encoding.Default.GetBytes(normalTxt);//求Byte[]数组
var Md5 = new MD5CryptoServiceProvider();
var encryptbytes = Md5.ComputeHash(bytes);//求哈希值
return Base64To16(encryptbytes);//将Byte[]数组转为净荷明文(其实就是字符串)
}
public static string SHA1Encrypt(string normalTxt)
{
var bytes = Encoding.Default.GetBytes(normalTxt);
var SHA = new SHA1CryptoServiceProvider();
var encryptbytes = SHA.ComputeHash(bytes);
return Base64To16(encryptbytes);
}
public static string SHA256Encrypt(string normalTxt)
{
var bytes = Encoding.Default.GetBytes(normalTxt);
var SHA256 = new SHA256CryptoServiceProvider();
var encryptbytes = SHA256.ComputeHash(bytes);
return Base64To16(encryptbytes);
}
public static string SHA384Encrypt(string normalTxt)
{
var bytes = Encoding.Default.GetBytes(normalTxt);
var SHA384 = new SHA384CryptoServiceProvider();
var encryptbytes = SHA384.ComputeHash(bytes);
return Base64To16(encryptbytes);
}
public static string SHA512Encrypt(string normalTxt)
{
var bytes = Encoding.Default.GetBytes(normalTxt);
var SHA512 = new SHA512CryptoServiceProvider();
var encryptbytes = SHA512.ComputeHash(bytes);
return Base64To16(encryptbytes);
}
private static string Base64To16(byte[] buffer)
{
string md_str = string.Empty;
for (int i = 0; i < buffer.Length; i++)
{
md_str += buffer[i].ToString("x2");
}
return md_str;
}
}