vb.net - Visual Basic .Net 公共函数在执行前对单行过程进行解码
问题描述
我在尝试一些代码时遇到了函数和过程的问题,如下所示:
Module mod1
Class ExampleApp
Dim textvalue as String = "dGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgdGV4dC4="
Dim string1 as String = "Convert.FromBase64String(input)"
Public Function DecodeB64(ByVal input As String) As String
Return System.Text.Encoding.UTF8.GetString(string1)
End Function
End Class
End Module
问题是,是否可以在执行之前在 Public Function 中对语句进行编码?
我见过一些他们在 PHP 脚本上实现它的案例,其中整个脚本在执行之前被编码。我已经尽力通过将“Convert.FromBase64String(input)”存储到字符串变量来应用相同的概念,但我遇到了这样的问题:
“字符串”类型的值无法转换为“字节的一维数组”
当我不应用这个概念时,base64 中的文本会被顺利解码。我的主要目标是尽可能地隐藏语句或语句组。此错误中的问题似乎是什么?
解决方案
您在示例代码中有 2 个错误:
首先,您应该知道
Convert.FromBase64String()
返回Byte()
数组,因此您不能将其分配给字符串变量/字段。其次,
Encoding.GetString()
需要Byte()
数组作为参数,但是您将字符串传递给它,因此InvalidCastException
发生了。
它们的正确用法应该是这样的:
Public Function DecodeB64(ByVal input As String) As String
' make sure the input string is Base64 formatted
Dim bytearray As Byte() = Convert.FromBase64String(input)
' decoding from byte array
Return System.Text.Encoding.UTF8.GetString(bytearray)
End Function
' usage
Dim textvalue as String = "dGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgdGV4dC4="
Dim result As String = DecodeB64(textvalue)
工作示例:.NET Fiddle 演示
推荐阅读
- sql-server - 带有 AND 和 IN 运算符的 LEFT JOIN 会给出错误:在预期条件的上下文中指定的非布尔类型的表达式
- angular - 角度相对路由无法按预期工作
- python - 通过电子邮件在 Django 中自定义身份验证登录
- python - 数据加密静态加密
- sql - 遍历行并删除具有特定值的行
- sql - 如何在多个条件下使用 Postgres CASE 简单/速记语法?
- javascript - Discord.JS 包本身的语法错误
- mysql - CentOS 7 上的 MariaDB 拒绝读取一些更新的变量
- ansible - 获取变量的正确值
- python - 有没有办法可以列出这个清单?