【问题标题】:Encrypter with Key and Message - VB.Net使用密钥和消息加密 - VB.Net
【发布时间】:2013-11-21 21:36:09
【问题描述】:

好的,所以我试图让我的程序获取你的密钥,并循环遍历密钥的每个字符,然后找到每个字符代码的 ascii 代码,然后循环遍历消息的每个字符,找到他们每个人的 ascii 代码,并将密钥代码添加到消息代码中,对密钥中的每个字符执行此操作,到消息中的每个字符。我遇到了一个小问题,它在添加第一个字母后立即更改了消息,我不知道如何解决它,任何帮助都会很棒!

基本上,我想要的只是关键字符的 ascii 代码并将它们添加到消息字符的 ascii 代码中,然后将最终代码转换回消息文本中的新字符。使用这个:

tbxMessage.Text = (AscW(Mid(tbxMessage.Text, xForMess, 1)) + AscW(vTemp))

这是我目前所拥有的一切:

Public Class Form1

Function fctEncryptDecrypt(pMess As String, pKey As String) As String
    If Len(tbxMessage.Text) > 0 Then
        Dim xForKey As Integer
        Dim xForMess As Integer
        Dim intKey As Integer
        Dim intMessage As Integer
        Dim strAsciiKeyChar As String
        Dim intAsciiKeyChar As Integer
        Dim strAsciiMesChar As String
        Dim intAsciiMesChar As Integer
        Dim vTemp As String
        Dim vTempMess As String

        intKey = Len(tbxKey.Text)
        intMessage = Len(tbxMessage.Text)
        For xForKey = 1 To intKey
            strAsciiKeyChar = Mid(tbxKey.Text, xForKey, 1)
            intAsciiKeyChar = AscW(strAsciiKeyChar)
            vTemp = intAsciiKeyChar
            For xForMess = 1 To intMessage
                strAsciiMesChar = Mid(tbxMessage.Text, xForMess, 1)
                intAsciiMesChar = AscW(strAsciiMesChar)
                vTempMess = vTemp + intAsciiMesChar
                tbxMessage.Text = (AscW(Mid(tbxMessage.Text, xForMess, 1)) + AscW(vTemp))
            Next xForMess
        Next xForKey
        Label1.Text = vTemp

    Else
        MessageBox.Show("No Message Found")
    End If
End Function

Private Sub btnEncrypt_Click(sender As System.Object, e As System.EventArgs) Handles btnEncrypt.Click
    fctEncryptDecrypt(tbxMessage.Text, tbxKey.Text)
End Sub
End Class

【问题讨论】:

  • fwiw,这不是加密。
  • 仅供参考,here's 的答案为在 VB.NET 中实现自定义加密提供了更强大的基础/框架。

标签: vb.net loops encryption for-loop


【解决方案1】:
tbxMessage.Text = (AscW(Mid(tbxMessage.Text, xForMess, 1)) + AscW(vTemp))

在内部 For 循环中将文本框的值设置为数字。

我希望使用一个临时字符串变量来收集

Chr((intAsciiKeyChar + intAsciiMesChar) mod 256)

我还希望在消息上一次应用一个字母的密钥。比如:

Dim i as Integer
Dim s as String
Dim sKey as String
Dim sMesg as String
Dim intCharacter as Integer
s = ""
For i = 1 to len(tbxMessage.Text)
    sKey = Mid(tbxKey.Text, (i mod Len(tbxKey)) + 1, 1)
    sMesg = Mid(tbxMessage.Text, i, 1)
    intCharacter = (WAsc(sKey) + WAsc(sMesg)) mod 256
    s = s & Chr(intCharacter)
Next
tbxMessage.Text = s

【讨论】:

  • (i mod Len(tbxKey)) 是干什么用的?我只是在@dfrevert 之前从未见过它
  • mod 是除法的余数。 5 / 3 = 1 + 2/3 5 模 3 = 2
  • 那么这对代码有什么作用,这与将 i 放在 Mid 函数中有何不同?
  • 通常密钥的长度会比消息的长度短。 Mid(s, tooBig, 1) 抛出错误。
猜你喜欢
  • 2022-01-28
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 2011-03-01
  • 2019-01-14
  • 2017-11-08
  • 2011-12-06
  • 1970-01-01
相关资源
最近更新 更多