You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
5.3 KiB
143 lines
5.3 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace DPMCrypto
|
|
{
|
|
public class clscrypto
|
|
{
|
|
public string apikey = "";
|
|
public string iv = "";
|
|
public string secretkey = "";
|
|
|
|
public string encrypt(string instring)
|
|
{
|
|
using (RijndaelManaged myRijndael = new RijndaelManaged())
|
|
{
|
|
myRijndael.Key = Encoding.UTF8.GetBytes(secretkey);
|
|
myRijndael.IV = Encoding.UTF8.GetBytes(iv);
|
|
byte[] encrypted = EncryptStringToBytes(instring, myRijndael.Key, myRijndael.IV);
|
|
return BitConverter.ToString(encrypted).Replace("-", "");
|
|
}
|
|
}
|
|
|
|
public string decrypt(string instring)
|
|
{
|
|
using (RijndaelManaged myRijndael = new RijndaelManaged())
|
|
{
|
|
myRijndael.Key = Encoding.UTF8.GetBytes(secretkey);
|
|
myRijndael.IV = Encoding.UTF8.GetBytes(iv);
|
|
byte[] xx = StringToByteArray(instring);
|
|
return DecryptStringFromBytes(xx, myRijndael.Key, myRijndael.IV);
|
|
}
|
|
|
|
}
|
|
|
|
public static byte[] StringToByteArray(string hex)
|
|
{
|
|
return Enumerable.Range(0, hex.Length)
|
|
.Where(x => x % 2 == 0)
|
|
.Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
|
|
.ToArray();
|
|
}
|
|
|
|
static byte[] EncryptStringToBytes(string plainText, byte[] Key, byte[] IV)
|
|
{
|
|
// Check arguments.
|
|
if (plainText == null || plainText.Length <= 0)
|
|
throw new ArgumentNullException("plainText");
|
|
if (Key == null || Key.Length <= 0)
|
|
throw new ArgumentNullException("Key");
|
|
if (IV == null || IV.Length <= 0)
|
|
throw new ArgumentNullException("IV");
|
|
byte[] encrypted;
|
|
// Create an RijndaelManaged object
|
|
// with the specified key and IV.
|
|
using (RijndaelManaged rijAlg = new RijndaelManaged())
|
|
{
|
|
rijAlg.Key = Key;
|
|
rijAlg.IV = IV;
|
|
|
|
// Create an encryptor to perform the stream transform.
|
|
ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);
|
|
|
|
// Create the streams used for encryption.
|
|
using (MemoryStream msEncrypt = new MemoryStream())
|
|
{
|
|
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
|
|
{
|
|
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
|
|
{
|
|
|
|
//Write all data to the stream.
|
|
swEncrypt.Write(plainText);
|
|
}
|
|
encrypted = msEncrypt.ToArray();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Return the encrypted bytes from the memory stream.
|
|
return encrypted;
|
|
}
|
|
|
|
static string DecryptStringFromBytes(byte[] cipherText, byte[] Key, byte[] IV)
|
|
{
|
|
// Check arguments.
|
|
if (cipherText == null || cipherText.Length <= 0)
|
|
throw new ArgumentNullException("cipherText");
|
|
if (Key == null || Key.Length <= 0)
|
|
throw new ArgumentNullException("Key");
|
|
if (IV == null || IV.Length <= 0)
|
|
throw new ArgumentNullException("IV");
|
|
|
|
// Declare the string used to hold
|
|
// the decrypted text.
|
|
string plaintext = null;
|
|
|
|
// Create an RijndaelManaged object
|
|
// with the specified key and IV.
|
|
using (RijndaelManaged rijAlg = new RijndaelManaged())
|
|
{
|
|
rijAlg.Key = Key;
|
|
rijAlg.IV = IV;
|
|
|
|
// Create a decryptor to perform the stream transform.
|
|
ICryptoTransform decryptor = rijAlg.CreateDecryptor(rijAlg.Key, rijAlg.IV);
|
|
|
|
// Create the streams used for decryption.
|
|
using (MemoryStream msDecrypt = new MemoryStream(cipherText))
|
|
{
|
|
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
|
|
{
|
|
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
|
|
{
|
|
// Read the decrypted bytes from the decrypting stream
|
|
// and place them in a string.
|
|
plaintext = srDecrypt.ReadToEnd();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return plaintext;
|
|
}
|
|
|
|
public static string Base64Encode(string plainText)
|
|
{
|
|
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
|
|
return System.Convert.ToBase64String(plainTextBytes);
|
|
}
|
|
|
|
public static string Base64Decode(string base64EncodedData)
|
|
{
|
|
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
|
|
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
|
|
}
|
|
}
|
|
}
|