我们总是有太多帐号,常常不得不把密码记到文档。但又想对密码加密,避免别人直接看到密码。这个工具实现对密码的加密和还原。 本程序源码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Security.Cryptography; using System.IO; namespace 密码管理 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private static String RDKey = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; private void button1_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); Random rd = new Random((int)DateTime.Now.Ticks); for (int i = 0; i < 16; i++) sb.Append(RDKey[rd.Next(RDKey.Length)]); OPSW.Text = sb.ToString(); } private void button3_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(Q.Text)) { MessageBox.Show("密保不能为空"); return; } if (string.IsNullOrEmpty(OPSW.Text)) { MessageBox.Show("原始密码不能为空"); return; } PSW1.Text = EncryptDES(OPSW.Text, Q.Text); } private void button2_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(Q.Text)) { MessageBox.Show("密保不能为空"); return; } if (string.IsNullOrEmpty(PSW1.Text)) { MessageBox.Show("加密密码不能为空"); return; } OPSW.Text = DecryptDES(PSW1.Text, Q.Text); } //默认密钥向量 private static byte[] rgbIV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; public static string EncryptDES(string encryptString, string encryptKey) { try { encryptKey += "--------"; byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring(0, 8));//转换为字节 byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();//实例化数据加密标准 MemoryStream mStream = new MemoryStream();//实例化内存流 //将数据流链接到加密转换的流 CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } catch { return encryptString; } } /// <summary> /// DES解密字符串 /// </summary> /// <param name="decryptString">待解密的字符串</param> /// <param name="decryptKey">解密密钥,要求为8位,和加密密钥相同</param> /// <returns>解密成功返回解密后的字符串,失败返源串</returns> public static string DecryptDES(string decryptString, string decryptKey) { try { decryptKey += "--------"; byte[] rgbKey = Encoding.UTF8.GetBytes(decryptKey.Substring(0, 8));//转换为字节 byte[] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0, inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch { return decryptString; } } } }
- zjr14777139102018-12-20下载下来并不能打开
- 粉丝: 11
- 资源: 27
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 蓝桥杯2024年第十五届省赛真题-前缀总分
- com.qihoo.appstore_300101305-1.apk
- tensorflow-gpu-2.7.1-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.1-cp39-cp39-manylinux2010-x86-64.whl
- 蓝桥杯2024年第十五届省赛真题-传送阵
- com.qihoo.appstore_300101305.apk
- linux之线程同步一.doc
- keil5配色方案10种
- python烟花代码.doc