教学服务系统

 找回密码
 立即注册
搜索
查看: 773|回复: 1

信息计算2019级1班08号林荟萃

[复制链接]

8

主题

20

帖子

92

积分

注册会员

Rank: 2

积分
92
发表于 2022-4-5 21:22:57 | 显示全部楼层 |阅读模式
4月5日慕课截图 :

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

8

主题

20

帖子

92

积分

注册会员

Rank: 2

积分
92
 楼主| 发表于 2022-4-5 21:25:38 | 显示全部楼层
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Security.Cryptography;
  5. using System.Text;
  6. using System.Threading.Tasks;

  7. using MSWord = Microsoft.Office.Interop.Word;
  8. using System.IO;
  9. using System.Reflection;
  10. using Microsoft.Office.Interop.Word;

  11. namespace mimaxue
  12. {
  13.     class Program
  14.     {
  15.         private string key;

  16.         static void Main(string[] args)
  17.         {
  18.             Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();//打开word程序
  19.             Document doc = null;

  20.             object unknow = Type.Missing;
  21.             app.Visible = true;

  22.             object paramSourceDocPath = @"C:\Users\13337525256\Desktop\test.docx";
  23.             doc = app.Documents.Open(ref paramSourceDocPath,
  24.                                 ref unknow, ref unknow, ref unknow, ref unknow, ref unknow,
  25.                                 ref unknow, ref unknow, ref unknow, ref unknow, ref unknow,
  26.                                 ref unknow, ref unknow, ref unknow, ref unknow, ref unknow);

  27.             string str = doc.Content.Text.Trim();

  28.             string str1 = AesEncryptor_Base64(str, "12345678876543211234567887654abc");
  29.             Console.WriteLine("password文档中加密后密文(Aes_Base64):" + str1);

  30.             string str2 = AesDecryptor_Base64(str1, "12345678876543211234567887654abc");
  31.             Console.WriteLine("解密上述密文:" + str2);

  32.             string str3 = AesEncryptor_Hex(str, "12345678876543211234567887654abc");
  33.             Console.WriteLine("password文档中加密后密文(Aes_Hex):" + str3);

  34.             string str4 = AesDecryptor_Hex(str3, "12345678876543211234567887654abc");
  35.             Console.WriteLine("解密上述密文:" + str4);
  36.             Console.ReadLine();
  37.         }
  38.         /// <summary>
  39.         /// AES 算法加密(ECB模式) 将明文加密,加密后进行base64编码,返回密文
  40.         /// </summary>
  41.         /// <param name="EncryptStr">明文</param>
  42.         /// <param name="Key">密钥</param>
  43.         /// <returns>加密后base64编码的密文</returns>
  44.         public static string AesEncryptor_Base64(string EncryptStr, string Key)
  45.         {
  46.             try
  47.             {
  48.                 //byte[] keyArray = Encoding.UTF8.GetBytes(Key);
  49.                 byte[] keyArray = Convert.FromBase64String(Key);
  50.                 byte[] toEncryptArray = Encoding.UTF8.GetBytes(EncryptStr);

  51.                 RijndaelManaged rDel = new RijndaelManaged();
  52.                 rDel.Key = keyArray;
  53.                 rDel.Mode = CipherMode.ECB;
  54.                 rDel.Padding = PaddingMode.PKCS7;

  55.                 ICryptoTransform cTransform = rDel.CreateEncryptor();
  56.                 byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

  57.                 return Convert.ToBase64String(resultArray, 0, resultArray.Length);
  58.             }
  59.             catch (Exception ex)
  60.             {
  61.                 return null;
  62.             }
  63.         }
  64.         /// <summary>
  65.         /// AES 算法解密(ECB模式) 将密文base64解码进行解密,返回明文
  66.         /// </summary>
  67.         /// <param name="DecryptStr">密文</param>
  68.         /// <param name="Key">密钥</param>
  69.         /// <returns>明文</returns>
  70.         public static string AesDecryptor_Base64(string DecryptStr, string Key)
  71.         {
  72.             try
  73.             {
  74.                 //byte[] keyArray = Encoding.UTF8.GetBytes(Key);
  75.                 byte[] keyArray = Convert.FromBase64String(Key);
  76.                 byte[] toEncryptArray = Convert.FromBase64String(DecryptStr);

  77.                 RijndaelManaged rDel = new RijndaelManaged();
  78.                 rDel.Key = keyArray;
  79.                 rDel.Mode = CipherMode.ECB;
  80.                 rDel.Padding = PaddingMode.PKCS7;

  81.                 ICryptoTransform cTransform = rDel.CreateDecryptor();
  82.                 byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

  83.                 return Encoding.UTF8.GetString(resultArray);//  UTF8Encoding.UTF8.GetString(resultArray);
  84.             }
  85.             catch (Exception ex)
  86.             {
  87.                 return null;
  88.             }
  89.         }
  90.         /// <summary>
  91.         ///AES 算法加密(ECB模式) 将明文加密,加密后进行Hex编码,返回密文
  92.         /// </summary>
  93.         /// <param name="str">明文</param>
  94.         /// <param name="key">密钥</param>
  95.         /// <returns>加密后Hex编码的密文</returns>
  96.         public static string AesEncryptor_Hex(string str, string key)
  97.         {
  98.             if (string.IsNullOrEmpty(str)) return null;
  99.             Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);

  100.             System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
  101.             {
  102.                 Key = StrToHexByte(key),
  103.                 Mode = System.Security.Cryptography.CipherMode.ECB,
  104.                 Padding = System.Security.Cryptography.PaddingMode.PKCS7
  105.             };

  106.             System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateEncryptor();
  107.             Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

  108.             return ToHexString(resultArray);
  109.         }
  110.         /// <summary>
  111.         ///AES 算法解密(ECB模式) 将密文Hex解码后进行解密,返回明文
  112.         /// </summary>
  113.         /// <param name="str">密文</param>
  114.         /// <param name="key">密钥</param>
  115.         /// <returns>明文</returns>
  116.         public static string AesDecryptor_Hex(string str, string key)
  117.         {
  118.             if (string.IsNullOrEmpty(str)) return null;
  119.             Byte[] toEncryptArray = StrToHexByte(str);

  120.             System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
  121.             {
  122.                 Key = StrToHexByte(key),
  123.                 Mode = System.Security.Cryptography.CipherMode.ECB,
  124.                 Padding = System.Security.Cryptography.PaddingMode.PKCS7
  125.             };

  126.             System.Security.Cryptography.ICryptoTransform cTransform = rm.CreateDecryptor();
  127.             Byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

  128.             return Encoding.UTF8.GetString(resultArray);
  129.         }
  130.         /// <summary>
  131.         /// byte数组Hex编码
  132.         /// </summary>
  133.         /// <param name="bytes">需要进行编码的byte[]</param>
  134.         /// <returns></returns>
  135.         public static string ToHexString(byte[] bytes) // 0xae00cf => "AE00CF "
  136.         {
  137.             string hexString = string.Empty;
  138.             if (bytes != null)
  139.             {
  140.                 StringBuilder strB = new StringBuilder();
  141.                 for (int i = 0; i < bytes.Length; i++)
  142.                 {
  143.                     strB.Append(bytes[i].ToString("X2"));
  144.                 }
  145.                 hexString = strB.ToString();
  146.             }
  147.             return hexString;
  148.         }
  149.         /// <summary>
  150.         /// 字符串进行Hex解码(Hex.decodeHex())
  151.         /// </summary>
  152.         /// <param name="hexString">需要进行解码的字符串</param>
  153.         /// <returns></returns>
  154.         public static byte[] StrToHexByte(string hexString)
  155.         {
  156.             hexString = hexString.Replace(" ", "");
  157.             if ((hexString.Length % 2) != 0)
  158.                 hexString += " ";
  159.             byte[] returnBytes = new byte[hexString.Length / 2];
  160.             for (int i = 0; i < returnBytes.Length; i++)
  161.                 returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
  162.             return returnBytes;
  163.         }
  164.         /// <summary>
  165.         /// 对象转成Json并加密
  166.         /// </summary>
  167.         /// <param name="str"></param>
  168.         /// <returns></returns>
  169.         public string DataAes(object str)
  170.         {
  171.             string json_str = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(str);
  172.             string miwen = AesEncryptor_Base64(json_str, key);
  173.             return miwen;
  174.         }

  175.         /// <summary>
  176.         /// 解密并Json解析成对象
  177.         /// </summary>
  178.         /// <param name="str"></param>
  179.         /// <returns></returns>
  180.         public T JsonToModel<T>(string str)
  181.         {
  182.             string mingwen = AesDecryptor_Base64(str, key);
  183.             System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
  184.             T Model = jss.Deserialize<T>(mingwen);
  185.             return Model;
  186.         }

  187.         /// <summary>
  188.         /// 解密并Json解析成list
  189.         /// </summary>
  190.         /// <param name="str"></param>
  191.         /// <returns></returns>
  192.         public IList<T> JsonToList<T>(string str)
  193.         {
  194.             string mingwen = AesDecryptor_Base64(str, key);
  195.             System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
  196.             IList<T> list = jss.Deserialize<List<T>>(mingwen);
  197.             return list;
  198.         }
  199.     }
  200. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

教学服务系统

GMT+8, 2025-5-6 11:41 , Processed in 0.021012 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表