谁能帮我看看代码C#

using System;
using System.IO;
using System.Security.Cryptography;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace oozinoz1
{
    /**/
    /// <summary> 
    /// Class5 的摘要说明。 
    /// </summary> 
    public class Class5
    {
        private static void InsertImage(string imagePath, string wordPath)
        {
            Document document = new Document();
            Section s = document.AddSection();
            Paragraph p = s.AddParagraph();

            System.Drawing.Image image = System.Drawing.Image.FromFile(imagePath);
            DocPicture Pic = p.AppendPicture(image);
            Pic.Width = 100;
            Pic.Height = 100;

            document.SaveToFile(wordPath, FileFormat.Doc);
        }
        static void Main()
        {
            // 生成电子文件 
            string filePath = "d:\\test.doc";
            string imagePath = @"d:\Download\lty.png";//你只需要把图片路径修改一下
            InsertImage(imagePath, filePath);//这行是我加的,其他没动
            StreamWriter sw = File.CreateText(filePath);
            sw.Write("西安");
            sw.Close();

            // 对电子文件进行哈希             
            byte[] fileHash = GetFileHash(filePath);
            // 取得公钥 
            string publicKey = GetKeyFromContainer("公文", false);
            // 取得私钥 
            string privateKey = GetKeyFromContainer("公文", true);

            Console.WriteLine("发送方:A");
            Console.WriteLine("电子文件地址:");
            Console.WriteLine(filePath);

            Console.WriteLine("哈希:");
            Console.WriteLine(ConvertBytesToString(fileHash));

            Console.WriteLine("使用私钥进行数字签名:");
            // 取得电子签名 
            byte[] ElectronicSignature = EncryptHash(privateKey, fileHash);
            Console.WriteLine(ConvertBytesToString(ElectronicSignature));

            Console.WriteLine("传送给接收方。");
            Console.WriteLine("");
            string fileCopyPath =@"d:\Download\litianyang.jpg";
            File.Copy(filePath, fileCopyPath, true);

            Console.WriteLine("是否篡改文件?(Y/N)");
            string sRe = string.Empty;
            do
            {
                sRe = Console.ReadLine();
            }
            while (sRe != "Y" && sRe != "N");

            byte[] fileCopyHash;
            if (sRe == "N")
            {
                Console.WriteLine("接收方收到电子文件。");

                Console.WriteLine("接收方:B");
                Console.WriteLine("接收文件地址:");
                Console.WriteLine(fileCopyPath);

                fileCopyHash = GetFileHash(fileCopyPath);
                Console.WriteLine("哈希:");
                Console.WriteLine(ConvertBytesToString(fileCopyHash));
            }
            else
            {
                Console.WriteLine("正在篡改文件。");
                sw = new StreamWriter(fileCopyPath);
                sw.WriteLine("公文已被篡改。");
                sw.Close();

                Console.WriteLine("接收方收到电子文件。");

                Console.WriteLine("接收方:");
                Console.WriteLine("接收文件地址:");
                Console.WriteLine(fileCopyPath);

                fileCopyHash = GetFileHash(fileCopyPath);
                Console.WriteLine("哈希:");
                Console.WriteLine(ConvertBytesToString(fileCopyHash));
            }

            Console.WriteLine("公钥:");
            Console.WriteLine(publicKey);

            //使用公钥进行验证 
            Console.WriteLine("使用公钥进行验证:");
            if (DecryptHash(publicKey, fileCopyHash, ElectronicSignature))
            {
                Console.WriteLine("通过验证,电子文件合法有效。");
            }
            else
            {
                Console.WriteLine("未通过验证,电子文件非法或被人篡改过。");
            }

            Console.Read();
        }

        /**/
        /// <summary> 
        /// 将Byte[]转换成十六进制字符串 
        /// </summary> 
        /// <param name="bytes">要转换的Byte[]</param> 
        /// <returns>十六进制字符串</returns> 
        public static string ConvertBytesToString(byte[] bytes)
        {
            string bytestring = string.Empty;
            if (bytes != null && bytes.Length > 0)
            {
                for (int i = 0; i < bytes.Length; i++)
                {
                    bytestring += bytes[i].ToString("X") + " ";
                }
            }
            return bytestring;
        }

        /**/
        /// <summary> 
        /// 得到指定电子文件的哈希 
        /// </summary> 
        /// <param name="filePath">电子文件地址</param> 
        /// <returns>哈希值</returns> 
        public static byte[] GetFileHash(string filePath)
        {
            try
            {
                FileStream objFile = File.OpenRead(filePath);
                HashAlgorithm MD5 = HashAlgorithm.Create("MD5");
                byte[] Hashbyte = MD5.ComputeHash(objFile);
                objFile.Close();
                return Hashbyte;
            }
            catch
            {
                return null;
            }
        }

        /**/
        /// <summary> 
        /// 得到公钥与私钥 
        /// </summary> 
        /// <param name="ContainerName">私钥容器名</param> 
        /// <param name="privatekey">真为得到私钥,假为得到公钥</param> 
        /// <returns>公钥或私钥</returns> 
        public static string GetKeyFromContainer(string ContainerName, bool privatekey)
        {
            CspParameters cp = new CspParameters();
            cp.KeyContainerName = ContainerName;
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(cp);
            return rsa.ToXmlString(privatekey);
        }

        /**/
        /// <summary> 
        /// 对哈希进行数字签名 
        /// </summary> 
        /// <param name="privateKey">私钥</param> 
        /// <param name="fileHash">电子文件哈希</param> 
        /// <returns></returns> 
        public static byte[] EncryptHash(string privateKey, byte[] fileHash)
        {
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

            RSA.FromXmlString(privateKey);

            RSAPKCS1SignatureFormatter RSAFormatter = new RSAPKCS1SignatureFormatter(RSA);

            RSAFormatter.SetHashAlgorithm("MD5");

            return RSAFormatter.CreateSignature(fileHash);
        }

        /**/
        /// <summary> 
        /// 对数字签名用公钥进行验证 
        /// </summary> 
        /// <param name="publicKey">公钥</param> 
        /// <param name="fileHash">接收到的电子文件的哈希</param> 
        /// <param name="electronicSignature">数字签名</param> 
        /// <returns>数字签名有效为真,数字签名无效为假</returns> 
        public static bool DecryptHash(string publicKey, byte[] fileHash, byte[] electronicSignature)
        {
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

            RSA.FromXmlString(publicKey);

            RSAPKCS1SignatureDeformatter RSADeformatter = new RSAPKCS1SignatureDeformatter(RSA);

            RSADeformatter.SetHashAlgorithm("MD5");

            return RSADeformatter.VerifySignature(fileHash, electronicSignature);
        }
    }
}

谁能帮我看看 我想加一张图片进去 为啥程序都没有报错 图片加不进去了

阅读 791
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进