如何用VB寫一個XOR AD的動作

重寫一次比較清楚

請問如何用VB寫一個XOR AD的動作

用小算盤

123456(10)>>1E240 (16)>> XOR AD >> AC4FED(16+)

那麼如何寫出 XOR AD 回來??

AC4FED(16+)>>XOR AD >> 1E240 (16)>> 123456(10)

網路上找遍沒任何有關XOR AD的資料可參考

不知是否有高手願意教一下 如何寫

才可以直接輸入ED 4F AC AD (或AC4FED)

就自動轉換 123456

我是用VB2008寫的

已更新項目:

123456(10)>>1E240 (16)

在把1E240 進行 XORAD 就是AC4FED

想要的就是怎麼AC4FED變回123456

因不知道怎麼開始 程式碼第一步要怎麼寫

必須知道AC4FED怎麼去XORAD回1E240

就這裡不知怎寫 之後要16進轉回10進就簡單了

2 個已更新項目:

這樣講好了 AD補足16進位置

就是1E240 就要 XOR ADADAD

就會是AC4FED

2 個解答

評分
  • 5 年前
    最佳解答

    123456(10)>>1E240 (16)>> XOR AD >> AC4FED(16+)

    用小算盤算,結果不是1E2ED嗎?為什麼是AC4FED呢?

    之前不是有人說:按照加密的方式去解碼

    所以

    加密如果是 A XOR AD=B

    解密就是 B XOR AD=A

    2014-10-23 21:16:27 補充:

    我用小算盤計算 1E240 XOR AD,

    答案都是1E2ED。

    你怎麼做才會是AC4FED呢?

    知道這個答案的做法,才有辦法幫你寫解碼

    2014-10-24 17:40:47 補充:

    根據你的說明,數字加密的方式是先轉成16進位,

    而參數是取AD的重複偶數位,且不得少於加密數字的16進位位數,

    最後用XOR函數進行加密。

    如果這樣的解讀是正確的,可以參考以下的程式

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    '123456(10)>>1E240 (16)>> XOR AD >> AC4FED(16+)

    Dim a10 As Integer = 123456 '要加密的數字

    Dim a16 As String = a10.ToString("X") '轉成16進位

    Dim b16 As String = "" '加密參數AD的字串

    Dim b10 As Integer = 0 '加密參數字串轉成10進位

    Dim newnum As Integer = 0 '加密後的數字

    If Len(a16) Mod 2 = 0 Then '取得參數有幾個AD字串

    For i = 1 To (Len(a16) / 2) '如果加密數字是偶數位,AD位數相同

    b16 &= "AD"

    Next

    Else

    For i = 1 To Int((Len(a16) / 2)) + 1 '如果是奇數位,AD位數多一位

    b16 &= "AD"

    Next

    End If

    b10 = Convert.ToInt32(b16, 16) 'AD字串轉成10進位

    newnum = a10 Xor b10 '進行加密

    TextBox1.Text = a10 & "(10)>>> " & a16 & "(16)>>>" & b16 & "(XOR)>>>" & newnum.ToString("X") & "(16+)>>>" & newnum & "(10+)" & vbNewLine

    End Sub

    以下是解密

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

    Dim newnum As Integer = 11292653 '這裡是加密後的數字(123456加密)

    Dim newnum16 As String = newnum.ToString("X")

    Dim b16 As String = ""

    Dim b10 As Integer = 0

    Dim oldnum As Integer = 0

    For i = 1 To (Len(newnum16) / 2)

    b16 &= "AD"

    Next

    b10 = Convert.ToInt32(b16, 16)

    oldnum = newnum Xor b10

    TextBox1.Text &= newnum & "(10)>>> " & newnum16 & "(16)>>>" & b16 & "(XOR)>>>" & oldnum.ToString("X") & "(16+)>>>" & oldnum & "(10+)"

    End Sub

    因為你的參數是動態的,所以加密後的16位元字串位數是否會增加、減少,這需要數學理論驗正。但如果會增加或減少,將會影響正確性。

    • 登入以對解答發表意見
  • 5 年前

    到下面的網址看看吧

    ▶▶http://qaz331.pixnet.net/blog

    • 登入以對解答發表意見
還有問題?馬上發問,尋求解答。