教学服务系统

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

信息计算2019级1班29号敖若瑶

[复制链接]

8

主题

18

帖子

124

积分

注册会员

Rank: 2

积分
124
发表于 2022-4-5 15:29:53 | 显示全部楼层 |阅读模式
4月5日慕课学习

本帖子中包含更多资源

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

x
回复

使用道具 举报

8

主题

18

帖子

124

积分

注册会员

Rank: 2

积分
124
 楼主| 发表于 2022-4-5 21:45:48 | 显示全部楼层
本帖最后由 信息计算敖若瑶 于 2022-4-5 22:49 编辑
  1. using System;
  2. using System.Text;
  3. using System.Reflection.Metadata;
  4. using Microsoft.Office.Interop.Word;

  5. namespace AES
  6. {
  7.     class Program
  8.     {
  9.         private static object app;

  10.         /// <summary>
  11.         ///AES 算法加密(ECB模式) 将明文加密,加密后进行Hex编码,返回密文
  12.         /// </summary>
  13.         /// <param name="str">明文</param>
  14.         /// <param name="key">密钥</param>
  15.         /// <returns>加密后Hex编码的密文</returns>
  16.         public static string AesEncryptor_Hex(string str, string key)
  17.         {
  18.             if (string.IsNullOrEmpty(str)) return null;
  19.             Byte[] toEncryptArray = Encoding.UTF8.GetBytes(str);

  20.             System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
  21.             {
  22.                 Key = StrToHexByte(key),
  23.                 Mode = System.Security.Cryptography.CipherMode.ECB,
  24.                 Padding = System.Security.Cryptography.PaddingMode.PKCS7
  25.             };

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

  28.             return ToHexString(resultArray);
  29.         }

  30.         private static string ToHexString(byte[] resultArray)
  31.         {
  32.             throw new NotImplementedException();
  33.         }

  34.         /// <summary>
  35.         ///AES 算法解密(ECB模式) 将密文Hex解码后进行解密,返回明文
  36.         /// </summary>
  37.         /// <param name="str">密文</param>
  38.         /// <param name="key">密钥</param>
  39.         /// <returns>明文</returns>

  40.         public static string AesDecryptor_Hex(string str, string key)
  41.         {
  42.             if (string.IsNullOrEmpty(str)) return null;
  43.             Byte[] toEncryptArray = StrToHexByte(str);

  44.             System.Security.Cryptography.RijndaelManaged rm = new System.Security.Cryptography.RijndaelManaged
  45.             {
  46.                 Key = StrToHexByte(key),
  47.                 Mode = System.Security.Cryptography.CipherMode.ECB,
  48.                 Padding = System.Security.Cryptography.PaddingMode.PKCS7
  49.             };

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

  52.             return Encoding.UTF8.GetString(resultArray);
  53.         }

  54.         public static byte[] StrToHexByte(string hexString)
  55.         {
  56.             hexString = hexString.Replace(" ", "");
  57.             if ((hexString.Length % 2) != 0)
  58.                 hexString += " ";
  59.             byte[] returnBytes = new byte[hexString.Length / 2];
  60.             for (int i = 0; i < returnBytes.Length; i++)
  61.                 returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
  62.             return returnBytes;
  63.         }

  64.         static void Main(string[] args)
  65.         {
  66.             Microsoft.Office.Interop.Word.Application A = new Microsoft.Office.Interop.Word.Application();//打开word程序
  67.             Document doc = null;
  68.             object unknow = Type.Missing;
  69.             A.Visible = true;
  70.             string str = @"/Users/gesilasapple/Desktop/大三下学业/密码学/读后感.docx";
  71.             object file = str;
  72.             doc = A.Documents.Open(ref file,
  73.                 ref unknow, ref unknow, ref unknow, ref unknow,
  74.                 ref unknow, ref unknow, ref unknow, ref unknow,
  75.                 ref unknow, ref unknow);

  76.             string str1 = doc.Content.Text.Trim();

  77.             string str2 = AesEncryptor_Hex(str1, "364836143850abc46746243098546756");
  78.             Console.WriteLine("Hex加密密文:" + str2);

  79.             string str3 = AesDecryptor_Hex(str2, "364836143850abc46746243098546756");
  80.             Console.WriteLine("Hex解密密文:" + str3);
  81.         }
  82.     }
  83. }
复制代码

回复

使用道具 举报

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

本版积分规则

教学服务系统

GMT+8, 2025-5-6 14:59 , Processed in 0.018664 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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