基於C#實現-維吉尼亞密碼加密、解密
前提是要有金鑰
- 程式碼只是實現基本原理,未做錯誤處理,如果出錯了看一下自己輸入的是不是有問題。
- 不區分大小寫輸入,以大寫的方式輸出
- C#程式碼線上生成器,注意在下方標識處輸入你的明文,或者密文,然後複製到 線上生成器
- 未做空格處理,輸入的時候不要有空格
using System;
using System.Threading;
namespace 密碼01
{
class Program
{
public static string zimu = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static char[] charzimu = zimu.ToCharArray();
static void Main(string[] args)
{
Console.WriteLine("選擇模式:a——加密,b——解密 並按下空格,只能輸入一個");
if (Console.ReadLine() == "a")
{
Console.Clear();
Console.WriteLine("進入加密模式");
Console.Write("請輸入明文:");
string mingwen = Console.ReadLine();
mingwen = mingwen.ToUpper();
Console.Write("請輸入金鑰:");
string miyao = Console.ReadLine();
miyao =miyao.ToUpper();
Console.Write("你所得到的密文是:");
string text = JiaMi(mingwen, miyao);
Console.WriteLine(text);
}
else if (Console.ReadLine() == "b")
{
Console.Clear();
Console.WriteLine("進入解密模式");
Console.Write("請輸入密文:");
string miwen = Console.ReadLine();
miwen =miwen.ToUpper();
Console.Write("請輸入金鑰:");
string miyao = Console.ReadLine();
miyao = miyao.ToUpper();
Console.Write("你所得到的明文是:");
string text = JieMi(miwen, miyao);
Console.WriteLine(text);
}
else
{
Console.WriteLine("請重啟程式,輸入a或者b選擇模式");
}
}
#region 解密部分
public static string JieMi(string miwen, string miyao)
{
char[] newmiyao = PiPei(miwen, miyao);
for (int i = 0; i < miwen.Length; i++)
{
int hanghao = zimu.IndexOf(newmiyao[i]);
newmiyao[i] = ZhaoZiMu(hanghao, newmiyao[i]);
}
string text = new string(newmiyao);
return text;
}
public static char[] GuoCheng(string a, char[] b)
{
char[] ch = a.ToCharArray();
for (int i = 0; i < a.Length; i++)
{
int hanghao = zimu.IndexOf(b[i]);
ch[i] = ZhaoZiMu(hanghao, b[i]);
}
return ch;
}
public static char ZhaoZiMu(int hang, Char ch)
{
string text = PaiHang(hang);
int e = text.IndexOf(ch);
return charzimu[e];
}
#endregion
#region 加密部分
public static string JiaMi(string mingwen, string miyao)
{
char[] newmiyao = PiPei(mingwen, miyao);
char[] ch = mingwen.ToCharArray();
for (int i = 0; i < mingwen.Length; i++)
{
int hanghao = zimu.IndexOf(newmiyao[i]);//金鑰的字母和行的字母進行比較,然後把所在位置拿出來
int lie = zimu.IndexOf(ch[i]);
ch[i] = JiaMiZiMu(hanghao, lie);//匹配行的字母然後找到所對應列的號,在把列號裡的字母取出來
}
string text = new string(ch);
return text;
}
public static char JiaMiZiMu(int hanghao, int lie)
{
string str = PaiHang(hanghao);
char ch = str[lie];
return ch;
}
#endregion
#region 公用
public static char[] PiPei(string a, string b)
{
char[] ch = a.ToCharArray();//將字串轉換為字元陣列
for (int i = 0; i < a.Length; i++)
{
ch[i] = b[i % b.Length];
}//ch[]裝的是變換完的金鑰
return ch;
}
public static string PaiHang(int hang)//重新排列行的字母序列
{
return zimu.Substring(hang) + zimu.Substring(0, hang);
}
#endregion
}
}
相關文章
- 維吉尼亞密碼密碼
- Go 如何實現 PHP 的密碼加密解密GoPHP密碼加密解密
- 序列密碼的加密與解密密碼加密解密
- 文字加密:常見的密碼加密解密方法加密密碼解密
- PHP實現摩斯電碼加密解密PHP加密解密
- 教你如何基於python實現指令碼加密Python指令碼加密
- 美國西弗吉尼亞州完成首例基於區塊鏈的州選舉投票區塊鏈
- 弗吉尼亞理工大學&Dashlane:研究表明大多數人建立的密碼仍很糟糕密碼
- app直播原始碼,android AES加密解密實現APP原始碼Android加密解密
- C# 實現記住密碼功能C#密碼
- 密碼學系列——常見的加密方式(c#程式碼實操)密碼學加密C#
- C# MD5 加密,解密C#加密解密
- Dotnet core結合jquery的前後端加密解密密碼密文傳輸的實現jQuery後端加密解密密碼
- 如何在 Linux 上用密碼加密和解密檔案Linux密碼加密解密
- iOS端基於RSA公鑰加密和解密iOS加密解密
- C#基於RSA加密演算法實現軟體註冊實戰演練C#加密演算法
- delphi加密C#解密(AES-256)加密C#解密
- 西弗吉尼亞州率先實施區塊鏈移動投票解決方案區塊鏈
- Linux基於tar與openssl加密解密壓縮包Linux加密解密
- 使用Java加密與解密實現步驟Java加密解密
- c#使用SHA256演算法實現對檔案的加密和解密C#演算法加密解密
- app直播原始碼,Node.js實現密碼雜湊加密APP原始碼Node.js密碼加密
- 如何基於Security框架相容多套使用者密碼加密方式框架密碼加密
- 通過Go實現AES加密和解密工具Go加密解密
- C#開發中常用的加密解密方法C#加密解密
- C#開發中常用加密解密方法解析C#加密解密
- Java實現密碼、檔案MD5加密,密碼sha256、sha384、sha512Hex等加密Java密碼加密
- 關於加密,解密,摘要,編碼的理解和應用加密解密
- Linux下實現 OpenSSL 簡單加密與解密字串Linux加密解密字串
- C# Base64加解密、MD5加密C#解密加密
- RSA加密解密示例程式碼加密解密
- 基於 koa 和 node-qrcode 實現一個二維碼生成工具
- Springboot+logback+druid +密碼加密 實現業務日誌入庫Spring BootUI密碼加密
- AES實現財務資料的加密解密儲存加密解密
- 加密解密加密解密
- 實驗一-密碼引擎-3-加密API密碼加密API
- 國密2 (sm2)非對稱加密解密工具--支援生成公鑰私鑰對及加密解密加密解密
- 談談《Dotnet core結合jquery的前後端加密解密密碼密文傳輸的實現》一文中後端解密失敗的原因jQuery後端加密解密密碼