@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
namespace _2021_backend.Utils
|
||||
{
|
||||
public static class CipherHelper
|
||||
{
|
||||
static byte[] EncryptStringToBytes_Aes(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 Aes object
|
||||
// with the specified key and IV.
|
||||
using (Aes aesAlg = Aes.Create())
|
||||
{
|
||||
aesAlg.Key = Key;
|
||||
aesAlg.IV = IV;
|
||||
|
||||
// Create an encryptor to perform the stream transform.
|
||||
ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.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_Aes(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 Aes object
|
||||
// with the specified key and IV.
|
||||
using (Aes aesAlg = Aes.Create())
|
||||
{
|
||||
aesAlg.Key = Key;
|
||||
aesAlg.IV = IV;
|
||||
|
||||
// Create a decryptor to perform the stream transform.
|
||||
ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
+16
-1
@@ -9,6 +9,7 @@ using TencentCloud.Common;
|
||||
using TencentCloud.Common.Profile;
|
||||
using TencentCloud.Sms.V20210111;
|
||||
using TencentCloud.Sms.V20210111.Models;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
namespace _2021_backend.Utils
|
||||
{
|
||||
@@ -21,12 +22,13 @@ namespace _2021_backend.Utils
|
||||
public static string SMSID_reject { get; set; }
|
||||
public static string SMSID_timeSet { get; set; }
|
||||
public static string SMSID_signed { get; set; }
|
||||
public static string SMSID_captcha { get; set; }
|
||||
|
||||
private static bool Initialized = false;
|
||||
|
||||
private static string SMSID_timeSelect { get; set; }
|
||||
|
||||
public static void Init(string tencentid, string tencentKey, string appid, string ID_accept, string ID_reject, string ID_timeSet, string ID_submitted, string ID_timeSelect)
|
||||
public static void Init(string tencentid, string tencentKey, string appid, string ID_accept, string ID_reject, string ID_timeSet, string ID_submitted, string ID_timeSelect,string ID_captcha)
|
||||
{
|
||||
Tencent_id = tencentid;
|
||||
Tencent_key = tencentKey;
|
||||
@@ -36,6 +38,7 @@ namespace _2021_backend.Utils
|
||||
SMSID_timeSet = ID_timeSet;
|
||||
SMSID_signed = ID_submitted;
|
||||
SMSID_timeSelect = ID_timeSelect;
|
||||
SMSID_captcha = ID_captcha;
|
||||
Initialized = true;
|
||||
}
|
||||
public static async Task<bool> Pull(BackendContext Context, Student stu, bool fullPull)
|
||||
@@ -145,6 +148,18 @@ namespace _2021_backend.Utils
|
||||
req.TemplateParamSet = new string[] { stu.Name };
|
||||
req.TemplateId = SMSID_signed;
|
||||
break;
|
||||
case SMSType.Captcha:
|
||||
sms.Type = SMSType.Captcha;
|
||||
var captchaBytes = new byte[]{0,0,0,0,0,0};
|
||||
RNGCryptoServiceProvider csp = new RNGCryptoServiceProvider();
|
||||
csp.GetBytes(captchaBytes);
|
||||
for (int i = 0; i < 6; i++) captchaBytes[i] %= 10;
|
||||
string captcha = $"{captchaBytes[0]}{captchaBytes[1]}{captchaBytes[2]}{captchaBytes[3]}{captchaBytes[4]}{captchaBytes[5]}";
|
||||
stu.LastCaptcha = captcha;
|
||||
stu.LastCaptchaTime = DateTime.Now;
|
||||
req.TemplateParamSet = new string[] { captcha };
|
||||
req.TemplateId = SMSID_captcha;
|
||||
break;
|
||||
}
|
||||
sms.Tel = stu.Tel;
|
||||
sms.Host = stu.Id;
|
||||
|
||||
Reference in New Issue
Block a user