C# 加密名称
我今天正在进行加密,我的同事告诉我一种更简单/自定义的方法,下面列出了我所做的,所以你能告诉我这是什么类型的加密或哈希签名吗?他告诉我这是某种哈希和加密的混合。抱歉问了个愚蠢的问题,我是新来的。:) 下面的方法接受一个字符串(在我的例子中是密码)。将其反转并生成字典(添加字典项如下所示),并匹配密钥和值,然后返回加密数据C# 加密名称,c#,.net,algorithm,encryption,C#,.net,Algorithm,Encryption,我今天正在进行加密,我的同事告诉我一种更简单/自定义的方法,下面列出了我所做的,所以你能告诉我这是什么类型的加密或哈希签名吗?他告诉我这是某种哈希和加密的混合。抱歉问了个愚蠢的问题,我是新来的。:) 下面的方法接受一个字符串(在我的例子中是密码)。将其反转并生成字典(添加字典项如下所示),并匹配密钥和值,然后返回加密数据 public static string Encrypt(string source) { string enCrypted = ""; try {
public static string Encrypt(string source)
{
string enCrypted = "";
try
{
source = Reverse(source);
Dictionary<char, char> sourceTable = AddDictionaryItems();
char[] sourceArray = source.ToCharArray();
StringBuilder encryptedData = new StringBuilder();
foreach (char chr in sourceArray)
{
KeyValuePair<char, char> Pair;
Pair = sourceTable.First(tuple => tuple.Key == chr);
encryptedData.Append(Pair.Value);
}
enCrypted=encryptedData.ToString();
}
catch (Exception ex)
{
}
return enCrypted;
}
公共静态字符串加密(字符串源)
{
字符串加密=”;
尝试
{
震源=反向(震源);
Dictionary sourceTable=AddDictionaryItems();
char[]sourceArray=source.ToCharArray();
StringBuilder encryptedData=新建StringBuilder();
foreach(sourceArray中的字符chr)
{
键值对;
Pair=sourceTable.First(tuple=>tuple.Key==chr);
encryptedData.Append(Pair.Value);
}
enCrypted=encryptedData.ToString();
}
捕获(例外情况除外)
{
}
返回加密;
}
下面的方法将项目添加到字典中,项目基本上基于ascii代码。我循环遍历所有ASCI,然后在字典中添加相应的字符。但真正的诀窍是在字典中添加条目时。e、 例如,当我在字典中添加'A'作为键时,它的值将是'D'。变量“jump”指定键和值之间的差异。因此,如果我的密码是'ABC',如果我将其反转,它将返回'DEF'或'FED'
public static Dictionary<char, char> AddDictionaryItems()
{
Dictionary<char, char> dc = new Dictionary<char, char>();
try
{
int initial = 33;
int jump = 3;
int final = 127 - jump;
for (int ascii = initial; ascii < final; ascii++)
{
dc.Add((char)ascii, (char)(ascii + jump));
}
for (int ascii = final; ascii < final + jump; ascii++)
{
dc.Add((char)ascii, (char)(initial));
initial++;
}
}
catch (Exception ex)
{
throw ex;
}
return dc;
}
公共静态字典AddDictionaryItems()
{
Dictionary dc=新字典();
尝试
{
int初始值=33;
int-jump=3;
int final=127-跳跃;
用于(int ascii=初始值;ascii<最终值;ascii++)
{
添加((字符)ascii,(字符)(ascii+跳转));
}
用于(int ascii=final;ascii
这将是一个很好的方法,但是,除非你是为了好玩,否则不要将此方法用于任何需要安全性的事情。(看看你当地的报纸,它可能也有一份,通常在填字游戏旁边)。伙计们,我已经定制了我的代码
public static string Reverse(string str)
{
char[] charArray = str.ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}
public static string Encrypt(string source)
{
string prefix = Guid.NewGuid().ToString();
string infix = Guid.NewGuid().ToString();
string postfix = Guid.NewGuid().ToString();
int length = source.Length;
string firstHalf = source.Substring(0, length / 2);
string secondHalf = source.Substring(length / 2);
string ConcatedPassword = prefix + firstHalf + infix + secondHalf + postfix;
string enCrypted = "";
try
{
ConcatedPassword = Reverse(ConcatedPassword);
Dictionary<char, char> sourceTable = AddDictionaryItems();
char[] sourceArray = ConcatedPassword.ToCharArray();
StringBuilder encryptedData = new StringBuilder();
foreach (char chr in sourceArray)
{
KeyValuePair<char, char> Pair;
Pair = sourceTable.First(tuple => tuple.Key == chr);
encryptedData.Append(Pair.Value);
}
enCrypted = encryptedData.ToString();
}
catch (Exception ex)
{
}
return enCrypted;
}
public static string Decrypt(string source)
{
string deCrypted = "";
try
{
source = Reverse(source);
Dictionary<char, char> sourceTable = AddDictionaryItems();
char[] sourceArray = source.ToCharArray();
StringBuilder decryptedData = new StringBuilder();
foreach (char chr in sourceArray)
{
KeyValuePair<char, char> Pair;
Pair = sourceTable.First(tuple => tuple.Value == chr);
decryptedData.Append(Pair.Key);
}
deCrypted = decryptedData.ToString();
string prefixRemoved = deCrypted.Remove(0, 36);
string postfixRemoved = prefixRemoved.Remove(prefixRemoved.Length - 36);
string infixRemoved = postfixRemoved.Remove((postfixRemoved.Length - 36) / 2, 36);
deCrypted = infixRemoved;
}
catch (Exception ex)
{
}
return deCrypted;
}
public static Dictionary<char, char> AddDictionaryItems()
{
Dictionary<char, char> dc = new Dictionary<char, char>();
try
{
int initial = 33;
int jump = 10;
int final = 127 - jump;
for (int ascii = initial; ascii < final; ascii++)
{
dc.Add((char)ascii, (char)(ascii + jump));
}
for (int ascii = final; ascii < final + jump; ascii++)
{
dc.Add((char)ascii, (char)(initial));
initial++;
}
}
catch (Exception ex)
{
}
return dc;
}
protected void Page_Load(object sender, EventArgs e)
{
string password = "$Om3P@55w0r6";
string encrypted = Encrypt(password);
string decrypted = Decrypt(encrypted);
}
publicstaticstringreverse(stringstr)
{
char[]charArray=str.ToCharArray();
数组。反向(charArray);
返回新字符串(charArray);
}
公共静态字符串加密(字符串源)
{
字符串前缀=Guid.NewGuid().ToString();
字符串中缀=Guid.NewGuid().ToString();
字符串后缀=Guid.NewGuid().ToString();
int length=source.length;
字符串firstHalf=source.Substring(0,长度/2);
字符串secondHalf=source.Substring(长度/2);
字符串ConcatedPassword=前缀+前半部分+中缀+后半部分+后缀;
字符串加密=”;
尝试
{
ConcatedPassword=反向(ConcatedPassword);
Dictionary sourceTable=AddDictionaryItems();
char[]sourceArray=ConcatedPassword.ToCharArray();
StringBuilder encryptedData=新建StringBuilder();
foreach(sourceArray中的字符chr)
{
键值对;
Pair=sourceTable.First(tuple=>tuple.Key==chr);
encryptedData.Append(Pair.Value);
}
enCrypted=encryptedData.ToString();
}
捕获(例外情况除外)
{
}
返回加密;
}
公共静态字符串解密(字符串源)
{
字符串解密=”;
尝试
{
震源=反向(震源);
Dictionary sourceTable=AddDictionaryItems();
char[]sourceArray=source.ToCharArray();
StringBuilder decryptedData=新建StringBuilder();
foreach(sourceArray中的字符chr)
{
键值对;
Pair=sourceTable.First(tuple=>tuple.Value==chr);
decryptedData.Append(Pair.Key);
}
deCrypted=decryptedData.ToString();
string prefixRemoved=已解密。Remove(0,36);
string postfix removed=前缀removed.Remove(前缀removed.Length-36);
字符串infixRemoved=postfix移除。移除((postfix移除。长度-36)/2,36);
解密=infixRemoved;
}
捕获(例外情况除外)
{
}
返回解密;
}
公共静态字典AddDictionaryItems()
{
Dictionary dc=新字典();
尝试
{
int初始值=33;
int跳跃=10;
int final=127-跳跃;
用于(int ascii=初始值;ascii<最终值;ascii++)
{
添加((字符)ascii,(字符)(ascii+跳转));
}
用于(int ascii=final;ascii
加密不安全,但这只是一个开始。我希望它能帮助人们从头开始编写自己的方法。'ABC'->'DEF'是凯撒密码的一个例子,这是一种加密方法,就像在高速公路上开错车道一样安全。啊哈,你明白我的意思了,是的,哥们,你说得对,是的,我记得我在网络课程中学习了凯撒密码。谢谢你提醒我。我用它只是为了好玩。此外,我还添加了两个guid,使其看起来更加困难: