我想在C#中询问以下VB6代码的等价物 正如你在这里看到的,我试图制作一个基本的加密代码,将每个字母转换为字节,然后再转换为十六进制...
Public Function Encrypt(s As String) As String
Dim bytArray() As Byte
bytArray = StrConv(s, vbFromUnicode)
For i = LBound(bytArray) To UBound(bytArray)
Encrypt = Encrypt & Hex(bytArray(i))
Next i
End Function
我尝试了一点C#,但我无法弄明白......
private string encrypt(string s, byte[] bytArray, string t)
{
bytArray = ????;
for(int i = 0; i < s.Length ????; i++{
t += Hex(bytArray[i]); ????
}
return t;
}
对不起,我真的是C#的新手,而且我已经在BASIC中进行了如此改编,以至于我不知道如何使用其他语言...请帮忙......谢谢!
答案 0 :(得分:0)
如果你想加密字符串,我认为你最好使用XOR(在C#中的^)而不是&amp ;. 以下是您写的一些例子:
using System.IO;
using System;
using System.Text;
class Program
{
static void Main()
{
string input = "test input";
byte[] key = new byte[input.Length];
Random r = new Random(DateTime.Now.Millisecond);
for (int i = 0; i < key.Length; i++)
{
key[i] = (byte)r.Next();
}
var result = Encrypt(input, key);
Console.WriteLine(result);
}
static string Encrypt(string inp, byte[] key){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < inp.Length; i++)
{
sb.Append(inp[i] & key[i]);
}
return sb.ToString();
}
}
您将无法使用&amp;
解码字符串C#具有带加密算法的System.Security.Cryptography命名空间
答案 1 :(得分:0)
定义&#34;加密&#34;。你真的只是意味着&#34;混淆&#34;?您是否尝试完全复制原始VB6 ?或者只是达到类似的效果?
一种可能的方法(这将编码为Unicode字节):
using System.Text;
string Encrypt(string text)
{
return string.Concat(
Encoding.Unicode.GetBytes(text).Select(b => b.ToString("x2")));
}
另一种可能性(这与VB6代码完全相同):
using System.Text;
string Encrypt(string text)
{
return string.Concat(
Encoding.Default.GetBytes(text).Select(b => b.ToString("x2")));
}
两者之间的唯一区别是使用哪个文本编码转换为字节。
答案 2 :(得分:0)
确切版本
VB.NET
Public Function Encrypt(s As String) As String
Encrypt = String.Empty
Dim byteArray() As Byte = System.Text.Encoding.Unicode.GetBytes(s)
For Each b As Byte In byteArray
Encrypt &= Hex(b)
Next
End Function
C#
static string Encrypt(string s)
{
string encrypt = "";
byte[] byteArray = System.Text.Encoding.Unicode.GetBytes(s);
foreach (byte b in byteArray)
{
encrypt += String.Format("{0:x}", System.Convert.ToInt64(b));
}
return encrypt;
}
简短版本 - 需要字符串格式
VB.NET
Public Function Encrypt(s As String) As String
Dim byteArray() As Byte = System.Text.Encoding.Unicode.GetBytes(s)
Encrypt = BitConverter.ToString(byteArray)
End Function
C#
static string Encrypt(string s)
{
byte[] byteArray = System.Text.Encoding.Unicode.GetBytes(s);
string encrypt = BitConverter.ToString(byteArray);
return encrypt;
}