教学服务系统

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

信息计算2019级2班31号吴明霞

[复制链接]

8

主题

20

帖子

152

积分

注册会员

Rank: 2

积分
152
发表于 2022-4-5 16:17:42 | 显示全部楼层 |阅读模式
第四次网课截图:


本帖子中包含更多资源

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

x
回复

使用道具 举报

8

主题

20

帖子

152

积分

注册会员

Rank: 2

积分
152
 楼主| 发表于 2022-4-5 21:29:59 | 显示全部楼层
  1. using System;
  2. using System.Text;
  3. using System.Security.Cryptography;
  4. using Microsoft.Office.Interop.Word;

  5. namespace AES
  6. {
  7.     class Program
  8.     {
  9.         /// <summary>
  10.         /// AES 算法加密(ECB模式) 将明文加密,加密后进行base64编码,返回密文
  11.         /// </summary>
  12.         /// <param name="EncryptStr">明文</param>
  13.         /// <param name="Key">密钥</param>
  14.         /// <returns>加密后base64编码的密文</returns>
  15.         public static string AesEncryptor_Base64(string EncryptStr, string Key)
  16.         {
  17.             try
  18.             {
  19.                 //byte[] keyArray = Encoding.UTF8.GetBytes(Key);
  20.                 byte[] keyArray = Convert.FromBase64String(Key);
  21.                 byte[] toEncryptArray = Encoding.UTF8.GetBytes(EncryptStr);

  22.                 RijndaelManaged rDel = new RijndaelManaged();
  23.                 rDel.Key = keyArray;
  24.                 rDel.Mode = CipherMode.ECB;
  25.                 rDel.Padding = PaddingMode.PKCS7;

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

  28.                 return Convert.ToBase64String(resultArray, 0, resultArray.Length);
  29.             }
  30.             catch (Exception ex)
  31.             {
  32.                 return null;
  33.             }
  34.         }

  35.         /// <summary>
  36.         /// AES 算法解密(ECB模式) 将密文base64解码进行解密,返回明文
  37.         /// </summary>
  38.         /// <param name="DecryptStr">密文</param>
  39.         /// <param name="Key">密钥</param>
  40.         /// <returns>明文</returns>
  41.         public static string AesDecryptor_Base64(string DecryptStr, string Key)
  42.         {
  43.             try
  44.             {
  45.                 //byte[] keyArray = Encoding.UTF8.GetBytes(Key);
  46.                 byte[] keyArray = Convert.FromBase64String(Key);
  47.                 byte[] toEncryptArray = Convert.FromBase64String(DecryptStr);

  48.                 RijndaelManaged rDel = new RijndaelManaged();
  49.                 rDel.Key = keyArray;
  50.                 rDel.Mode = CipherMode.ECB;
  51.                 rDel.Padding = PaddingMode.PKCS7;

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

  54.                 return Encoding.UTF8.GetString(resultArray);//  UTF8Encoding.UTF8.GetString(resultArray);
  55.             }
  56.             catch (Exception ex)
  57.             {
  58.                 return null;
  59.             }
  60.         }

  61.         /// <summary>
  62.         ///AES 算法加密(ECB模式) 将明文加密,加密后进行Hex编码,返回密文
  63.         /// </summary>
  64.         /// <param name="str">明文</param>
  65.         /// <param name="key">密钥</param>
  66.         /// <returns>加密后Hex编码的密文</returns>
  67.         public static string AesEncryptor_Hex(string str, string key)
  68.         {
  69.             if (string.IsNullOrEmpty(str)) return null;
  70.             Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);

  71.             System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
  72.             {
  73.                 Key = StrToHexByte(key),
  74.                 Mode = System.Security.Cryptography.CipherMode.ECB,
  75.                 Padding = System.Security.Cryptography.PaddingMode.PKCS7
  76.             };

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

  79.             return ToHexString(resultArray);
  80.         }
  81.         /// <summary>
  82.         ///AES 算法解密(ECB模式) 将密文Hex解码后进行解密,返回明文
  83.         /// </summary>
  84.         /// <param name="str">密文</param>
  85.         /// <param name="key">密钥</param>
  86.         /// <returns>明文</returns>
  87.         public static string AesDecryptor_Hex(string str, string key)
  88.         {
  89.             if (string.IsNullOrEmpty(str)) return null;
  90.             Byte[] toEncryptArray = StrToHexByte(str);

  91.             System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
  92.             {
  93.                 Key = StrToHexByte(key),
  94.                 Mode = System.Security.Cryptography.CipherMode.ECB,
  95.                 Padding = System.Security.Cryptography.PaddingMode.PKCS7
  96.             };

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

  99.             return Encoding.UTF8.GetString(resultArray);
  100.         }
  101.         /// <summary>
  102.         /// byte数组Hex编码
  103.         /// </summary>
  104.         /// <param name="bytes">需要进行编码的byte[]</param>
  105.         /// <returns></returns>
  106.         public static string ToHexString(byte[] bytes) // 0xae00cf => "AE00CF "
  107.         {
  108.             string hexString = string.Empty;
  109.             if (bytes != null)
  110.             {
  111.                 StringBuilder strB = new StringBuilder();
  112.                 for (int i = 0; i < bytes.Length; i++)
  113.                 {
  114.                     strB.Append(bytes[i].ToString("X2"));
  115.                 }
  116.                 hexString = strB.ToString();
  117.             }
  118.             return hexString;
  119.         }
  120.         /// <summary>
  121.         /// 字符串进行Hex解码(Hex.decodeHex())
  122.         /// </summary>
  123.         /// <param name="hexString">需要进行解码的字符串</param>
  124.         /// <returns></returns>
  125.         public static byte[] StrToHexByte(string hexString)
  126.         {
  127.             hexString = hexString.Replace(" ", "");
  128.             if ((hexString.Length % 2) != 0)
  129.                 hexString += " ";
  130.             byte[] returnBytes = new byte[hexString.Length / 2];
  131.             for (int i = 0; i < returnBytes.Length; i++)
  132.                 returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
  133.             return returnBytes;
  134.         }

  135.         static void Main(string[] args)
  136.         {
  137.             Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();//打开word程序
  138.             Document doc = null;//实例化一个新的word文档

  139.             object unknow = Type.Missing;
  140.             app.Visible = true;

  141.             object paramSourceDocPath = @"C:\Users\15658\Desktop\密码解密.docx";
  142.             doc = app.Documents.Open(ref paramSourceDocPath,
  143.                   ref unknow, ref unknow, ref unknow, ref unknow, ref unknow,
  144.                   ref unknow, ref unknow, ref unknow, ref unknow, ref unknow);

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

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

  149.             string str2 = AesDecryptor_Base64(str1, "12345678876543211234567887654abc");
  150.             Console.WriteLine("解密上述密文:" + str2);
  151.             Console.WriteLine("\n" );

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

  154.             string str4 = AesDecryptor_Hex(str3, "12345678876543211234567887654abc");
  155.             Console.WriteLine("解密上述密文:" + str4);
  156.         }
  157.     }
  158. }
复制代码

运行结果:

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

教学服务系统

GMT+8, 2025-5-6 14:29 , Processed in 0.017630 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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