嗨'我正在学习C#(作为业余爱好者)并试图想出如何编写一个简单的加密程序。
从ASCII转换字符很好,得到了排序,但这是我坚持的转变。例如,如果我想编码(n + 3),我应该遵循什么样的思路?
答案 0 :(得分:4)
您是否正在尝试使用凯撒密码? (即取出每个字母并将其移动一定数量的字母向左或向右?)
如果是这样,您将需要使用字符串上的单个字符。有一个允许这样的数据类型char,你可以进行算术运算。要从字符串中获取字符数组,请调用(string).ToCharArray()。然后你可以遍历角色并移动每个角色。
char key = (char)3;
string toEncrypt = "abcdef";
char[] cArray = toEncrypt.ToCharArray();
for (var i = 0; i < cArray.Length; i++) {
cArray[i] = (char)(cArray[i] + key);
}
要记住的一件事是,如果字符超过字母表的末尾,则需要“包裹”它们。我会把这作为挑战给你。 :)
请记住,虽然这是一种学习语言的有趣方式,但它在现实世界中对加密没有用,并且非常容易破解。
答案 1 :(得分:2)
.net框架内置了大量加密选项。既然你正在徘徊,也许你想手工完成,但你的测试程序可以简单地使用框架。
System.Security.Cryptography Namespace
也可以使用Cryptography Application Block
使用这些可能比您需要的多,但使用内置框架来实现您的目标可能有助于教您.net框架和c#。
答案 2 :(得分:0)
(char)('n' + 3)
之类的东西可以为你提供你正在寻找的角色,然后你可以再次将它转换为数字。
答案 3 :(得分:0)
您所看到的是Caesar cipher
在密码学中,也是凯撒密码 被称为凯撒的密码,转变 密码,凯撒的代码或凯撒的转变, 是最简单和最广泛的之一 已知的加密技术。它是一个 替换密码的类型 明文中的每个字母都是 用一个固定数字的字母代替 在字母表中的位置。对于 例如,A的移位为3 由D代替,B将成为E,和 等等。该方法以此命名 使用它的朱利叶斯凯撒 与他的将军沟通。
这是开始学习的好方法,但请阅读破解密码
部分您可以尝试类似
的内容string val = "abc";
string encrypt = "";
for (int iChar = 0; iChar < val.Length; iChar++)
{
encrypt += (char)(val[iChar] + 3);
}
string decrypt = "";
for (int iChar = 0; iChar < encrypt.Length; iChar++)
{
decrypt += (char)(encrypt[iChar] - 3);
}
另一个简单的选择是
这意味着你只需要 一种方法,“EncryptDecrypt”。通过一个 串入其中并将其取回 加密。传递加密的字符串 进入它,你得到原来的 文本,只要XOR字符是 同样的。
答案 4 :(得分:0)
如果您不想尝试使用自己的加密,则框架内置了加密功能。有关详细信息,请参阅此article。
编辑:固定链接