VB.NET中的加密功能

时间:2012-01-26 10:52:33

标签: vb.net

以下代码为Left(strEncrKey, 8)提供了错误。错误说公共属性Left没有参数返回。

代码

Public Function Encrypt(ByVal strText As String) As String
    Dim strEncrKey As String = "welcome123"
    Dim IV() As Byte = {&H12, &H34, &H56, &H78, &H90, &HAB, &HCD, &HEF}
    Try
        **Dim bykey() As Byte = System.Text.Encoding.UTF8.GetBytes(Left(strEncrKey, 8))**
        Dim InputByteArray() As Byte = System.Text.Encoding.UTF8.GetBytes(strText)
        Dim des As New DESCryptoServiceProvider
        Dim ms As New MemoryStream
        Dim cs As New CryptoStream(ms, des.CreateEncryptor(bykey, IV), CryptoStreamMode.Write)
        cs.Write(InputByteArray, 0, InputByteArray.Length)
        cs.FlushFinalBlock()
        Return Convert.ToBase64String(ms.ToArray())
    Catch ex As Exception
        Return ex.Message
    End Try    
End Function

1 个答案:

答案 0 :(得分:2)

此代码可能位于Form内。好吧,Left是该表单的属性和编译器的意思(即Me.Left)。

要消除歧义,你必须使用Left函数的完全限定名称 - 或者更好,根本不使用它(它已被弃用)。改为使用String类方法:

Dim bykey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0, 8))

请注意,我在类型声明中省略了括号和As …。如果您在项目选项中指定了Option StrictOption Infer,那么表示该类型是多余的,我高度推荐。