String 如何推进字母表中的字符串3个字母(凯撒密码)?

String 如何推进字母表中的字符串3个字母(凯撒密码)?,string,vb.net,encryption,caesar-cipher,String,Vb.net,Encryption,Caesar Cipher,我正在尝试制作一个程序,对用户提交的字符串进行加密。我想使用一种加密技术,其中字符串是字母表中的3个字母。 示例:abc将变成def 目前我有一个文本框(TextBox1)和一个按钮(Button1)。 到目前为止,我的代码是: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim rawText As String rawText = TextBox1.Text

我正在尝试制作一个程序,对用户提交的字符串进行加密。我想使用一种加密技术,其中字符串是字母表中的3个字母。
示例:
abc
将变成
def

目前我有一个文本框(
TextBox1
)和一个按钮(
Button1
)。
到目前为止,我的代码是:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim rawText As String
    rawText = TextBox1.Text
    Dim letterTxt As String = Chr(Asc(rawText) + 3)
    MsgBox(letterTxt)

End Sub
问题是,当我运行它时,它只输出1个字母。
我做错了什么?

一种方法。接受正、负移位,并可选择接受多个字母。
后者将使用不同于通常US-ASCII的ASCII表进行测试

它不会改变数字(跳过),但如果需要,可以使用相同的模式对其进行修改

使用
加扰
参数选择加扰(True)或解扰(False)

样本测试代码:

Dim-Scrambled1作为字符串=CaesarCipher(“ABCXYZabcxyz”,3,True)
Dim SCRAMED2作为字符串=CaesarCipher(“ABCXYZabcxyz”,-5,True)
“1现在是defabc defabc
'Scrambled2现在是VWXSTUvwxstu
将Dim解读为字符串=密码(加扰2,-5,false)
"解读现在是ABCXYZabcxyz

函数CaesarCipher(输入为字符串,CaesarShift为整数,置乱为布尔值,可选字母为整数=26)作为字符串
将值设置为整数
Dim MinValue作为整数=AscW(“A”c)
Dim MaxValue为整数=AscW(“Z”c)
Dim扰码模式为整数=If((扰码),1,-1)
作为StringBuilder的Dim输出=新StringBuilder(Input.Length)
如果Math.Abs(CaesarShift)>=字母,那么
CaesarShift=(字母*数学符号(CaesarShift))-数学符号(CaesarShift)
如果结束
对于每个c作为输入中的字符
CharValue=AscW(c)
如果不是Char.IsNumber(c),则
CharValue=CharValue+(CaesarShift*扰码模式)Mod字母
CharValue=If(AscW(Char.ToUpper(c))+(caesashift*扰码模式)>MaxValue,CharValue-字母,CharValue)
CharValue=If(AscW(Char.ToUpper(c))+(caesashift*扰码模式)
您需要一个for循环来运行每个字符以生成结果。此外,使用
ASCW()
CHRW()
因为我们现在使用的是Unicode,而不是ASCII世界。
XYZ
XYZ
将成为
[\]
{code>{124;}
。这是一个可行的选择吗?或者你想从
A开始,A
?无论你在做什么,都可能是重复的,这不是加密。它可能仅仅是一个密码。Net内置了几种真正的加密算法。你应该看看其中的一个。