vbs加密算法问题

2024-12-16 14:15:49
推荐回答(3个)
回答1:

将asc转换为十六进制即可,位数统一,还可以忽略负号。

Function GenerateCode(strText)
    '输入字符串(strText),返回十六进制ANSI编码
    Dim i
    For i=1 to Len(strText)
        GenerateCode = GenerateCode & Hex(Asc(Mid(strText,i,1)))
    Next
End Function

Function GetText(strCode)
    '输入十六进制ANSI编码(strCode),返回字符串原文
    Dim i,strTmp
    For i=1 to Len(strCode) Step 2
        strTmp = "&h" & Mid(strCode,i,2)
        If CInt(strTmp)<128 Then
            GetText = GetText & Chr(strTmp)
        Else
            i = i + 2
            GetText = GetText & Chr(strTmp & Mid(strCode,i,2))
        End If
    Next
End Function

这是我自己加密字符串用的。符合你的要求,密文为十六进制无分隔符的连续字符串,ASCII字符(0-127)转换为2位,其它ANSI字符(256-65535)转换为4位。

此算法是本着平衡 [加密/解密的代码量] 与 [密文长度] 为宗旨编写的。


不知道你加密想要干什么,但我还是建议你:

  1. 不要想着进一步通过运算等方式“加密”,因为在vbs下解密算法是明文,一切加密在懂行者看来都是没意义的。在我看来,vbs的加密充其量也就是稍微隐藏下字符串或代码,不被人一眼就看到意图而已。所以说,我这个算法就够用了。

  2. 如果想进一步隐藏代码,可以自己百度[ Scripting.Encoder ]。不出意外的,这个也可以被解密。


代码中有不懂的地方可以追问。

回答2:

直接数位用零补齐不就行了。速度快,简便易行,全部数字都补齐到最长位。
读取的时候直接按位数严格读就行了。
具体代码很简单。用string函数就行了。

回答3:

你是不是要按位数读取出ASCII码然后Chr它?