维吉尼亚加密与解密
/// <summary> /// 维吉尼亚加密与解密 /// </summary> public static class VigenereHelper { /// <summary> /// 密钥 /// </summary> private static string TableKey = @"abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789=&"; /// <summary> /// 生成密钥字符串 /// </summary> /// <param name="input">明文或者密文</param> /// <returns></returns> private static string GetKey(string input) { string key = "ZoveCenter202104091148"; StringBuilder sbKey = new StringBuilder(key); //如果密钥长度比str短,则以不断重复密钥的方式生成密钥字符串 while (sbKey.Length < input.Length) { sbKey.Append(key); } return sbKey.ToString(); } /// <summary> /// 加密算法 /// </summary> /// <param name="input">明文字符串</param> /// <returns>字符串</returns> public static string Encrypt(string input) { //密钥字符串 string K = GetKey(input); StringBuilder sbRel = new StringBuilder(); for (var loop = 0; loop < input.Length; loop++) { //明文字符位置 var iP = TableKey.IndexOf(input[loop]); if (iP == -1) { sbRel.Append(input[loop]); } else { //密钥字符位置 var iK = TableKey.IndexOf(K[loop]); if (iK == -1) { throw new Exception("密钥中包含非法字符:" + TableKey[loop]); } sbRel.Append(TableKey[(iP + iK) % TableKey.Length]); } } return sbRel.ToString(); } /// <summary> /// 解密 /// </summary> /// <param name="input">密文</param> /// <returns>返回解密后的字符串</returns> public static string Decrypt(string input) { //密钥字符串 string K = GetKey(input); StringBuilder sbRel = new StringBuilder(); for (var loop = 0; loop < input.Length; loop++) { //密钥判断 var iK = TableKey.IndexOf(K[loop]); //密文字符 var iC = TableKey.IndexOf(input[loop]); if (iC == -1) { sbRel.Append(input[loop]); } else if (iK > iC) { sbRel.Append(TableKey[iC + TableKey.Length - iK]); } else { sbRel.Append(TableKey[iC - iK]); } } return sbRel.ToString(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构