本帖最后由 tgguan 于 2021-3-24 16:16 编辑
看见前几天https://www.52pojie.cn/thread-1394307-1-3.html 这里有个加密通信的软件,想起我原来也做过一个,分享给大家。【PS,底部还有一个图片切切切工具,太小了,就不重开帖浪费资源了】
第一次运行会询问是否添加开机启动:
如果经常使用建议开机启动。不需要管理员权限。
平时默认是一个假装成时钟的东西
点击时间进行加密或解密,第一次使用需设定PIN码
点击分钟可以进行PIN码设置【不要介意标题,这是我原来一个软件里独立出来的小小模块,没有改UI】:
PIN码可以任意设置,比如只设置第4位,设置完当场生效,不需要确定,直接×掉窗口即可。
为什么要设置一个PIN码,问题就是在于,如果你在一个群聊里,出现了一个叛徒,他把这个软件给IT管理员,进行逆向后,可以任意解密你的通信。
而设置PIN码后,就没有办法简单的通过逆向进行破解。
而且如果怀疑有人向其他人透露PIN码,可以及时更换PIN码进行通信。
加密解密方法:
设置好PIN码后,将要加密或解密的内容复制到粘贴板,然后点击“小时”的数字就可以进行加密或解密。
软件检测到是密文就解密,否则就加密。
加密后的密文:
i/nkp5vNY4PAJNK0fNL+Kk5IlYnFo2F0QgNOtP3qX5Om3K5mZjPH9hZsG3SoLAxF53fqrTzoBtRcdfcFE3/hJA==
解密后的结果:【PIN码为123456】
解密结果将自动进入粘贴板,可以粘贴到其他地方或者重新加密
项目久远,源码找不到了,核心加密代码我贴在下面供参考。
软件下载:
MiniBox.rar
(290.6 KB, 下载次数: 98)
[C#] 纯文本查看 复制代码 #region 解密解密模块
string encryptStr, decryptStr;
static string K1 = "rqooys";
public static string K2 = "0";
static string K3 = "u";
public static string K4 = "0";
static string K5 = "reuldwh";
public static string K6 = "0";
static string K7 = "rlkpfprqlhu";
public static string K8 = "0";
static string K9 = "f";
public static string K10 = "0";
public static string K11 = "0";
static string Keyend = "";
public static string key()
{
Keyend = K1 + K2 + K3 + K4 + K5 + K6 + K7 + K8 + K9 + K10 + K11;
return Keyend;
}
/// <summary>
/// AES加密
/// </summary>
/// <param name="encryptStr">明文</param>
/// <param name="key">密钥</param>
/// <returns></returns>
public static string Encrypt(string encryptStr, string Keyend)
{
key();
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(Keyend);
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(encryptStr);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return Convert.ToBase64String(resultArray, 0, resultArray.Length);
}
/// <summary>
/// AES解密
/// </summary>
/// <param name="decryptStr">密文</param>
/// <param name="key">密钥</param>
/// <returns></returns>
public static string Decrypt(string decryptStr, string Keyend)
{
key();
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(Keyend);
byte[] toEncryptArray = Convert.FromBase64String(decryptStr);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
return UTF8Encoding.UTF8.GetString(resultArray);
}
#endregion
[C#] 纯文本查看 复制代码 private void JiaMiJieMi_Click(object sender, EventArgs e)
{
if (Convert.ToDouble(K2 + K4 + K6 + K8 + K10 + K11) != 0)
{
string temp = "";
string temp2 = "";
string M = "";
// Create a new instance of the DataObject interface.
IDataObject data = Clipboard.GetDataObject();
// If the data is text, then set the text of the TextBox to the text in the Clipboard.
if (data.GetDataPresent(DataFormats.Text))
{
string str = data.GetData(DataFormats.Text).ToString();
string a = @"@(\S+)\s";
Regex r = new Regex(a);
Match m = r.Match(str);
if (m.Success)
{
M = m.ToString();
//string str1, str2;
//str1 = str.Substring(0, m.Index);
//str2 = str.Substring(m.Index + a.Length, str.Length - a.Length - m.Index);
//temp=str1 + str2;
//MessageBox.Show(str1);
//MessageBox.Show(str2);
temp = Regex.Replace(str, a, string.Empty, RegexOptions.Compiled);
}
else
{
temp = str;
}
}
if (temp != string.Empty)
{
try
{
decryptStr = Decrypt(temp, Keyend);
temp2 = M + decryptStr;
MessageBox.Show(temp2);
Clipboard.SetDataObject(temp2);
}
catch (Exception)
{
//MessageBox.Show("密文出错,请检查!", "错误");
decryptStr = temp;
encryptStr = Encrypt(decryptStr, Keyend);
temp2 = M + encryptStr;
Clipboard.SetDataObject(temp2);
MessageBox.Show("加密完成,请到聊天框粘贴!");
}
}
else
{
MessageBox.Show("粘贴板空白,请先复制明文或密文后重新尝试!");
}
}
else
{
MessageBox.Show("尚未设置私密PIN码,助手无法完美保护您的通信安全,请先设置PIN码");
}
}
另外我独立之前是可以设置多个PIN码的,源码丢了,不修复了。
——————————————————————分割线——————————————————
图片切切乐
唯一的作用就是将选中的图片,宽度不变,高度按照等比切成几份。
这玩意是之前用Outlook的时候,因为Outlook对邮件正文的图片有高度限制,导致超长图片显示不完整,所以就这样切了。
如果需要更详细的切图,我见论坛里有大佬发过,可以用那个,如果只是邮件里用的话,我这个更方便一点。
切切切.zip
(4.66 KB, 下载次数: 12)
|