bootstrap signin将邮件改成用户名_用C#编程快速发送SMTP邮件,含附件和加密(源代码)...

f8ffe2ee54258f4d46bfa8c4223ff26f.png
  1. 一、主要功能:封装好SMTP邮件发送类,可以发送含附件的邮件,快速编程。另外考虑避免明码密码泄露个人隐私,可以先将密码加密(简单的加密处理)保存,然后再在实例化类的时候解密。
  2. 二、代码截图:

80bca401c7b6bb4c2c53d021e9d49570.png
  1. 三、完整代码:
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Windows.Forms;
  7. using System.IO;
  8. using System.Net.Mail;
  9. using System.Net.NetworkInformation;
  10. using System.Security.Cryptography;
  11. namespace SMTPEmailSender
  12. {
  13. /// <summary>
  14. /// SMTP邮件发送类
  15. /// </summary>
  16. public class SMTPEmailSender
  17. {
  18. /// <summary>
  19. /// SMTP邮件发送类的构造函数
  20. /// </summary>
  21. /// <param name="TargetSmtpServer">SMTP邮件服务器类型,软件根据枚举会自动使用对应的SMTP服务器,可方便用户,没有必要记住每个SMTP服务器的名字</param>
  22. /// <param name="TargetSmtpUserName">SMTP邮件服务器上的用户名,用来登录</param>
  23. /// <param name="TargetSmtpUserPassword">SMTP邮件服务器上的用户密码,用来登录</param>
  24. /// <param name="TargetSmtpServerNameUri">SMTP邮件服务器地址,如果在SMTP服务器枚举类型中没有找到对应服务器,就需要输入对应SMTP服务器的地址,且枚举类型选择:SmtpOthers</param>
  25. public SMTPEmailSender(SmtpServerAddress TargetSmtpServer, string TargetSmtpUserName, string TargetSmtpUserPassword, string TargetSmtpServerNameUri = "")
  26. {
  27. try
  28. {
  29. if (TargetSmtpServer == SmtpServerAddress.SmtpOthers)
  30. {
  31. sSmtpServerNameUri = TargetSmtpServerNameUri;
  32. }
  33. else
  34. {
  35. sSmtpServerNameUri = SmtpServerNames[(int)TargetSmtpServer];
  36. }
  37. sSmtpUserName = TargetSmtpUserName;
  38. client.Host = sSmtpServerNameUri;//服务器地址
  39. //client.Port = port;//服务器端口 -- 如果这里指定了端口号,会导致邮件发送失败
  40. //身份验证
  41. client.DeliveryMethod = SmtpDeliveryMethod.Network;
  42. System.Net.NetworkCredential credential = new System.Net.NetworkCredential(TargetSmtpUserName, TargetSmtpUserPassword);
  43. client.UseDefaultCredentials = false;// true -- 开始发送失败,以为是这里设置为 false 导致的,其实设置为 true 也一样可以发送邮件,不受影响
  44. client.Credentials = credential;
  45. }
  46. catch (Exception ex)
  47. {
  48. //if (ShowMessageDialog == true)
  49. //{
  50. MessageBox.Show("SMTP邮件发送类实例化时发生错误:rn" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  51. //}
  52. }
  53. }
  54. #region "变量定义"
  55. /// <summary>
  56. /// 软件作者:彭东南,邮箱地址:southeastofstar@163.com
  57. /// </summary>
  58. public const string Author = "软件作者:彭东南,邮箱地址:southeastofstar@163.com";
  59. /// <summary>
  60. /// 是否使用提示对话框显示信息,默认 true
  61. /// </summary>
  62. public bool ShowMessageDialog = true;
  63. /// <summary>
  64. /// SMTP邮件服务器地址
  65. /// </summary>
  66. private string sSmtpServerNameUri = "";
  67. /// <summary>
  68. /// SMTP邮件服务器地址
  69. /// </summary>
  70. public string SmtpServerNameUri
  71. {
  72. get { return sSmtpServerNameUri; }
  73. }
  74. /// <summary>
  75. /// SMTP邮件服务器上的用户名,用来登录
  76. /// </summary>
  77. string sSmtpUserName = "";
  78. /// <summary>
  79. /// SMTP邮件服务器上的用户名,用来登录
  80. /// </summary>
  81. public string SmtpUserName
  82. {
  83. get { return sSmtpUserName; }
  84. }
  85. /// <summary>
  86. /// 发件人
  87. /// </summary>
  88. public string SmtpEmailSender
  89. {
  90. get { return sSmtpEmailSender; }
  91. set { sSmtpEmailSender = value; }
  92. }
  93. /// <summary>
  94. /// 收件人
  95. /// </summary>
  96. private string sSmtpEmailReceiver = "";
  97. /// <summary>
  98. /// 收件人
  99. /// </summary>
  100. public string SmtpEmailReceiver
  101. {
  102. get { return sSmtpEmailReceiver; }
  103. set { sSmtpEmailReceiver = value; }
  104. }
  105. /// <summary>
  106. /// 实例化 SmtpClient 对象
  107. /// </summary>
  108. SmtpClient client = new SmtpClient();
  109. #endregion
  110. #region "主流SMTP服务器地址 -- 定义枚举"
  111. /// <summary>
  112. /// SMTP主流服务器地址
  113. /// </summary>
  114. string[] SmtpServerNames = new string[] {
  115. "smtp.sina.com.cn",
  116. "smtp.vip.sina.com",
  117. "smtp.sohu.com",
  118. "smtp.126.com",
  119. "SMTP.139.com",
  120. "smtp.163.com",
  121. "smtp.qq.com",
  122. "smtp.exmail.qq.com",
  123. "smtp.mail.yahoo.com",
  124. "smtp.mail.yahoo.com.cn",
  125. "Microsoft free personal email",
  126. "smtp.gmail.com",
  127. "smtp.263.net",
  128. "smtp.263.net.cn",
  129. "smtp.21cn.com",
  130. "SMTP.foxmail.com",
  131. "中华邮",
  132. "smtp.tom.com"
  133. };
  134. /// <summary>
  135. /// SMTP主流服务器地址 -- 定义枚举
  136. /// </summary>
  137. public enum SmtpServerAddress
  138. {
  139. /// <summary>
  140. /// 其它未定义SMTP服务器,必须要传入SMTP服务器的地址作为参数
  141. /// </summary>
  142. SmtpOthers = -1,
  143. /// <summary>
  144. /// SMTP服务器地址:http://smtp.sina.com.cn(端口:25);
  145. /// </summary>
  146. SmtpSina = 0,
  147. /// <summary>
  148. /// SMTP服务器:http://smtp.vip.sina.com (端口:25);
  149. /// </summary>
  150. SmtpSinaVip = 1,
  151. /// <summary>
  152. /// SMTP服务器地址:http://smtp.sohu.com(端口:25);
  153. /// </summary>
  154. SmtpSohu = 2,
  155. /// <summary>
  156. /// SMTP服务器地址:http://smtp.126.com(端口:25)
  157. /// </summary>
  158. Smtp126 = 3,
  159. /// <summary>
  160. /// SMTP服务器地址:SMTP.139.com(端口:25);
  161. /// </summary>
  162. Smtp139 = 4,
  163. /// <summary>
  164. /// SMTP服务器地址:http://smtp.163.com(端口:25);
  165. /// </summary>
  166. Smtp163 = 5,
  167. /// <summary>
  168. /// SMTP服务器地址:smtp.qq.com(端口:25);
  169. /// </summary>
  170. SmtpQQ = 6,
  171. /// <summary>
  172. /// SMTP服务器地址:smtp.exmail.qq.com(SSL启用 端口:587/465);
  173. /// </summary>
  174. SmtpQQEnterprise = 7,
  175. /// <summary>
  176. /// SMTP服务器地址:smtp.mail.yahoo.com;
  177. /// </summary>
  178. SmtpYahoo = 8,
  179. /// <summary>
  180. /// SMTP服务器地址:http://smtp.mail.yahoo.com.cn(端口:587);
  181. /// </summary>
  182. SmtpYahooChina = 9,
  183. /// <summary>
  184. /// SMTP服务器地址:Microsoft free personal email(端口:587);
  185. /// </summary>
  186. SmtpHotMail = 10,
  187. /// <summary>
  188. /// SMTP服务器地址:http://smtp.gmail.com(SSL启用 端口:587);
  189. /// </summary>
  190. SmtpGmail = 11,
  191. /// <summary>
  192. /// SMTP服务器地址:http://smtp.263.net(端口:25);
  193. /// </summary>
  194. Smtp263 = 12,
  195. /// <summary>
  196. /// SMTP服务器地址:http://smtp.263.net.cn(端口:25);
  197. /// </summary>
  198. Smtp263China = 13,
  199. /// <summary>
  200. /// SMTP服务器地址:http://smtp.21cn.com(端口:25);
  201. /// </summary>
  202. Smtp21cn = 14,
  203. /// <summary>
  204. /// SMTP服务器地址:http://SMTP.foxmail.com(端口:25);
  205. /// </summary>
  206. SmtpFoxmail = 15,
  207. /// <summary>
  208. /// SMTP服务器地址:http://smtp.china.com(端口:25);
  209. /// </summary>
  210. SmtpChina = 16,
  211. /// <summary>
  212. /// SMTP服务器地址:http://smtp.tom.com(端口:25);
  213. /// </summary>
  214. SmtpTom = 17
  215. }
  216. #endregion
  217. #region "函数代码"
  218. /// <summary>
  219. /// 同步发送SMTP邮件
  220. /// </summary>
  221. /// <param name="EmailAddressOfSender">发件人邮箱地址</param>
  222. /// <param name="EmailAddressOfReceiver">收件人邮箱地址</param>
  223. /// <param name="MailSubject">邮件主题</param>
  224. /// <param name="MailBody">邮件正文</param>
  225. /// <returns>是否执行成功</returns>
  226. public bool Send(string EmailAddressOfSender, string EmailAddressOfReceiver, string MailSubject, string MailBody)
  227. {
  228. try
  229. {
  230. client.Send(EmailAddressOfSender, EmailAddressOfReceiver, MailSubject, MailBody);
  231. }
  232. catch (Exception ex)
  233. {
  234. if (ShowMessageDialog == true)
  235. {
  236. MessageBox.Show("发送SMTP邮件时发生错误:rn" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  237. }
  238. return false;
  239. }
  240. return true;
  241. }
  242. /// <summary>
  243. /// 异步发送SMTP邮件
  244. /// </summary>
  245. /// <param name="EmailAddressOfSender">发件人邮箱地址</param>
  246. /// <param name="EmailAddressOfReceiver">收件人邮箱地址</param>
  247. /// <param name="MailSubject">邮件主题</param>
  248. /// <param name="MailBody">邮件正文</param>
  249. public async void SendAsync(string EmailAddressOfSender, string EmailAddressOfReceiver, string MailSubject, string MailBody)
  250. {
  251. try
  252. {
  253. await client.SendMailAsync(EmailAddressOfSender, EmailAddressOfReceiver, MailSubject, MailBody);
  254. }
  255. catch (Exception ex)
  256. {
  257. if (ShowMessageDialog == true)
  258. {
  259. MessageBox.Show("发送SMTP邮件时发生错误:rn" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  260. }
  261. }
  262. }
  263. /// <summary>
  264. /// 同步发送SMTP邮件【含单个附件】
  265. /// </summary>
  266. /// <param name="EmailAddressOfSender">发件人邮箱地址</param>
  267. /// <param name="EmailAddressOfReceiver">收件人邮箱地址</param>
  268. /// <param name="MailSubject">邮件主题</param>
  269. /// <param name="MailBody">邮件正文</param>
  270. /// <param name="AttachmentFileName">邮件附档的文件名称(绝对路径或相对路径)</param>
  271. /// <returns>是否执行成功</returns>
  272. public bool Send(string EmailAddressOfSender, string EmailAddressOfReceiver, string MailSubject, string MailBody, string AttachmentFileName)
  273. {
  274. try
  275. {
  276. Attachment NewAttachment = null;
  277. MailMessage NewMailMsg = null;
  278. if (string.IsNullOrEmpty(AttachmentFileName) == false)
  279. {
  280. NewAttachment = new Attachment(AttachmentFileName);
  281. NewMailMsg = new MailMessage(EmailAddressOfSender, EmailAddressOfReceiver, MailSubject, MailBody);
  282. NewMailMsg.Attachments.Add(NewAttachment);
  283. //发送邮件
  284. client.Send(NewMailMsg);
  285. }
  286. else
  287. {
  288. client.Send(EmailAddressOfSender, EmailAddressOfReceiver, MailSubject, MailBody);
  289. }
  290. }
  291. catch (Exception ex)
  292. {
  293. if (ShowMessageDialog == true)
  294. {
  295. MessageBox.Show("发送SMTP邮件时发生错误:rn" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  296. }
  297. return false;
  298. }
  299. return true;
  300. }
  301. /// <summary>
  302. /// 异步发送SMTP邮件【含单个附件】
  303. /// </summary>
  304. /// <param name="EmailAddressOfSender">发件人邮箱地址</param>
  305. /// <param name="EmailAddressOfReceiver">收件人邮箱地址</param>
  306. /// <param name="MailSubject">邮件主题</param>
  307. /// <param name="MailBody">邮件正文</param>
  308. /// <param name="AttachmentFileName">邮件附档的文件名称(绝对路径或相对路径)</param>
  309. /// <returns>是否执行成功</returns>
  310. public async void SendAsync(string EmailAddressOfSender, string EmailAddressOfReceiver, string MailSubject, string MailBody, string AttachmentFileName)
  311. {
  312. try
  313. {
  314. Attachment NewAttachment = null;
  315. MailMessage NewMailMsg = null;
  316. if (string.IsNullOrEmpty(AttachmentFileName) == false)
  317. {
  318. NewAttachment = new Attachment(AttachmentFileName);
  319. NewMailMsg = new MailMessage(EmailAddressOfSender, EmailAddressOfReceiver, MailSubject, MailBody);
  320. NewMailMsg.Attachments.Add(NewAttachment);
  321. //发送邮件
  322. await client.SendMailAsync(NewMailMsg);
  323. }
  324. else
  325. {
  326. await client.SendMailAsync(EmailAddressOfSender, EmailAddressOfReceiver, MailSubject, MailBody);
  327. }
  328. }
  329. catch (Exception ex)
  330. {
  331. if (ShowMessageDialog == true)
  332. {
  333. MessageBox.Show("发送SMTP邮件时发生错误:rn" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  334. }
  335. }
  336. }
  337. /// <summary>
  338. /// 同步发送SMTP邮件【含多个附件】
  339. /// </summary>
  340. /// <param name="EmailAddressOfSender">发件人邮箱地址</param>
  341. /// <param name="EmailAddressOfReceiver">收件人邮箱地址</param>
  342. /// <param name="MailSubject">邮件主题</param>
  343. /// <param name="MailBody">邮件正文</param>
  344. /// <param name="AttachmentFileName">邮件附档的文件名称(绝对路径或相对路径)</param>
  345. /// <returns>是否执行成功</returns>
  346. public bool Send(string EmailAddressOfSender, string EmailAddressOfReceiver, string MailSubject, string MailBody, string[] AttachmentFileName)
  347. {
  348. try
  349. {
  350. Attachment NewAttachment = null;
  351. MailMessage NewMailMsg = null;
  352. if (null != AttachmentFileName && AttachmentFileName.Length > 0)
  353. {
  354. NewMailMsg = new MailMessage(EmailAddressOfSender, EmailAddressOfReceiver, MailSubject, MailBody);
  355. for (int i = 0; i < AttachmentFileName.Length; i++)
  356. {
  357. try
  358. {
  359. if (string.IsNullOrEmpty(AttachmentFileName[i]) == false)
  360. {
  361. NewAttachment = new Attachment(AttachmentFileName[i]);
  362. NewMailMsg.Attachments.Add(NewAttachment);
  363. }
  364. }
  365. catch (Exception)
  366. {
  367. }
  368. }
  369. //发送邮件
  370. client.Send(NewMailMsg);
  371. }
  372. else
  373. {
  374. client.Send(EmailAddressOfSender, EmailAddressOfReceiver, MailSubject, MailBody);
  375. }
  376. }
  377. catch (Exception ex)
  378. {
  379. if (ShowMessageDialog == true)
  380. {
  381. MessageBox.Show("发送SMTP邮件时发生错误:rn" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  382. }
  383. return false;
  384. }
  385. return true;
  386. }
  387. /// <summary>
  388. /// 异步发送SMTP邮件【含多个附件】
  389. /// </summary>
  390. /// <param name="EmailAddressOfSender">发件人邮箱地址</param>
  391. /// <param name="EmailAddressOfReceiver">收件人邮箱地址</param>
  392. /// <param name="MailSubject">邮件主题</param>
  393. /// <param name="MailBody">邮件正文</param>
  394. /// <param name="AttachmentFileName">邮件附档的文件名称(绝对路径或相对路径)</param>
  395. /// <returns>是否执行成功</returns>
  396. public async void SendAsync(string EmailAddressOfSender, string EmailAddressOfReceiver, string MailSubject, string MailBody, string[] AttachmentFileName)
  397. {
  398. try
  399. {
  400. Attachment NewAttachment = null;
  401. MailMessage NewMailMsg = null;
  402. if (null != AttachmentFileName && AttachmentFileName.Length > 0)
  403. {
  404. NewMailMsg = new MailMessage(EmailAddressOfSender, EmailAddressOfReceiver, MailSubject, MailBody);
  405. for (int i = 0; i < AttachmentFileName.Length; i++)
  406. {
  407. try
  408. {
  409. if (string.IsNullOrEmpty(AttachmentFileName[i]) == false)
  410. {
  411. NewAttachment = new Attachment(AttachmentFileName[i]);
  412. NewMailMsg.Attachments.Add(NewAttachment);
  413. }
  414. }
  415. catch (Exception)
  416. {
  417. }
  418. }
  419. //发送邮件
  420. await client.SendMailAsync(NewMailMsg);
  421. }
  422. else
  423. {
  424. await client.SendMailAsync(EmailAddressOfSender, EmailAddressOfReceiver, MailSubject, MailBody);
  425. }
  426. }
  427. catch (Exception ex)
  428. {
  429. if (ShowMessageDialog == true)
  430. {
  431. MessageBox.Show("发送SMTP邮件时发生错误:rn" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  432. }
  433. }
  434. }
  435. /// <summary>
  436. /// 打开文件对话框
  437. /// </summary>
  438. OpenFileDialog dlgOpenFile = null;// = new OpenFileDialog();
  439. /// <summary>
  440. /// 需要添加到附件的文件名称数组
  441. /// </summary>
  442. public string[] OpenedAttachments = null;
  443. /// <summary>
  444. /// 打开需要添加到附件的文件
  445. /// </summary>
  446. /// <returns></returns>
  447. public string[] OpenAttachments()
  448. {
  449. try
  450. {
  451. if (null == dlgOpenFile)
  452. {
  453. dlgOpenFile = new OpenFileDialog();
  454. dlgOpenFile.Title = "添加件附";
  455. dlgOpenFile.Multiselect = true;
  456. dlgOpenFile.RestoreDirectory = false;
  457. dlgOpenFile.CheckFileExists = true;
  458. dlgOpenFile.Filter = "所有文件(*.*)|*.*";
  459. }
  460. if (dlgOpenFile.ShowDialog() == DialogResult.OK && dlgOpenFile.FileNames != null)
  461. {
  462. OpenedAttachments = dlgOpenFile.FileNames;
  463. return OpenedAttachments;
  464. }
  465. else
  466. {
  467. return null;
  468. }
  469. }
  470. catch (Exception ex)
  471. {
  472. if (ShowMessageDialog == true)
  473. {
  474. MessageBox.Show("打开需要添加到附件的文件时发生错误:rn" + ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  475. }
  476. return null;
  477. }
  478. }
  479. //添加加密和解密的代码,使邮件的密码能够用加密后的内容进行存储或读取,避免明文密码不安全的问题
  480. //默认密钥向量
  481. private static byte[] Keys = { 0x2F, 0xE7, 0xA2, 0x43, 0x81, 0x49, 0xDE, 0x53 };
  482. //DES加密字符串
  483. /// <summary>
  484. /// DES加密字符串
  485. /// </summary>
  486. /// <param name="EncryptString">待加密的字符串</param>
  487. /// <returns>加密成功返回加密后的字符串,失败返回源串 </returns>
  488. private string Encrypt(string EncryptString)//EncryptDES , string EncryptKey
  489. {
  490. try
  491. {
  492. //byte[] rgbKey = Encoding.UTF8.GetBytes(rgbKeysForCreateEncryptor.Substring(0, 8));//转换为字节,长度限定为8个字节,否则报错:指定键的大小对于此算法无效。
  493. byte[] rgbIV = Keys;
  494. byte[] inputByteArray = Encoding.UTF8.GetBytes(EncryptString);
  495. DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();//实例化数据加密标准
  496. MemoryStream mStream = new MemoryStream();//实例化内存流
  497. //将数据流链接到加密转换的流
  498. //CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  499. CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(byGgbKeysForCreateEncryptor, rgbIV), CryptoStreamMode.Write);
  500. cStream.Write(inputByteArray, 0, inputByteArray.Length);
  501. cStream.FlushFinalBlock();
  502. return Convert.ToBase64String(mStream.ToArray());
  503. }
  504. catch
  505. {
  506. return EncryptString;
  507. }
  508. }
  509. byte[] byGgbKeysForCreateEncryptor = null;
  510. /// <summary>
  511. /// DES加密字符串:加密成功返回加密后的字符串,失败返回源串
  512. /// </summary>
  513. /// <param name="EncryptString">待加密的字符串</param>
  514. /// <param name="EncryptPassword">加密密钥,要求为8个字节</param>
  515. /// <returns>加密成功返回加密后的字符串,失败返回源串 </returns>
  516. public string Encrypt(string EncryptString, string EncryptPassword)
  517. {
  518. try
  519. {
  520. if (string.IsNullOrEmpty(EncryptPassword) == true || Encoding.UTF8.GetBytes(EncryptPassword).Length != 8)// EncryptPassword.Length > 8)
  521. {
  522. MessageBox.Show("加密密码不能为空,长度为8个字母、数字或符号,总共8个字节.", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  523. return EncryptString;
  524. }
  525. byGgbKeysForCreateEncryptor = Encoding.UTF8.GetBytes(EncryptPassword);
  526. return Encrypt(EncryptString);
  527. }
  528. catch
  529. {
  530. return EncryptString;
  531. }
  532. }
  533. //DES解密字符串
  534. /// <summary>
  535. /// DES解密字符串
  536. /// </summary>
  537. /// <param name="DecryptString">待解密的字符串</param>
  538. /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
  539. private string Decrypt(string DecryptString)//DecryptDES
  540. {
  541. try
  542. {
  543. //byte[] rgbKey = Encoding.UTF8.GetBytes(srgbKeyForCreateDecryptor.Substring(0, 8));
  544. byte[] rgbIV = Keys;
  545. byte[] inputByteArray = Convert.FromBase64String(DecryptString);
  546. DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
  547. MemoryStream mStream = new MemoryStream();
  548. //CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
  549. CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(byRgbKeyForCreateDecryptor, rgbIV), CryptoStreamMode.Write);
  550. cStream.Write(inputByteArray, 0, inputByteArray.Length);
  551. cStream.FlushFinalBlock();
  552. return Encoding.UTF8.GetString(mStream.ToArray());
  553. }
  554. catch
  555. {
  556. return DecryptString;
  557. }
  558. }
  559. private byte[] byRgbKeyForCreateDecryptor = null;
  560. /// <summary>
  561. /// DES解密字符串
  562. /// </summary>
  563. /// <param name="DecryptString">待解密的字符串</param>
  564. /// <param name="DecryptPassword">解密密钥,要求为8位,和加密密钥相同</param>
  565. /// <returns>解密成功返回解密后的字符串,失败返源串</returns>
  566. public string Decrypt(string DecryptString, string DecryptPassword)
  567. {
  568. try
  569. {
  570. if (string.IsNullOrEmpty(DecryptPassword) == true || Encoding.UTF8.GetBytes(DecryptPassword).Length != 8)// DecryptPassword.Length > 8)
  571. {
  572. MessageBox.Show("解密密码不能为空,长度为8个字母、数字或符号,总共8个字节.", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  573. return DecryptString;
  574. }
  575. byRgbKeyForCreateDecryptor = Encoding.UTF8.GetBytes(DecryptPassword);
  576. return Decrypt(DecryptString);
  577. }
  578. catch
  579. {
  580. return DecryptString;
  581. }
  582. }
  583. #endregion
  584. }//class
  585. }//namespace
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值